-------------
Released 2016-08-30
* Add dictionary access to ``standalone.rpc.ClusterProxy`` to allow the proxy
to call services whose name is not a legal identifier in python
(e.g. name has a ``-`` in it).
* Add the ability to specify a custom `ServiceContainer` class via config key.
Deprecate the keyword arguments to `ServiceRunner` and `run_services` for
the same purpose.
* Deprecate the keyword arguments to `run_services`, `ServiceContainer` and
`ServiceRunner.add_service` for specifying a custom `WorkerContext` class.
Custom `WorkerContext` classes can now only be specified with a custom
`ServiceContainer` class that defines the `worker_ctx_cls` attribute.
* Remove the `context_keys` attribute of the `WorkerContext`, which was
previously used to "whitelist" worker context data passed from call to call.
It was a feature that leaked from a specific implementation into the main
framework, and not useful enough in its own right to continue to be
supported.
* Refactor `ServiceContainer` internals for better separation between "managed"
and "worker" threads. Improved logging when threads are killed.