Add ability to auto-launch and obtain instance of
a `Service` with a single command.
Add `Service`-specific events `Launch()` / `ShutDown()`
Add ability to auto-register required listeners on launch.
Events might rely on a particular `Service` to generate them,
this patch allows them to auto-launch/shutdown a service, depending on
whether anybody is listening to it's events.
Make events functions `OnEnabled()` and `OnEnabled()`
protected rather than public.
Move initialization and clean up logic into
`OnCreated()` and `OnDestroyed()` event functions.
Change base class for JSON objects from `Object` to `AcediaObject`.
Rename some classes/functions/structures/variables to
be more compact and/or better convey their meaning.
Add appropriate API that contains constructors for JSON objects.
We want all actors and objects defined in Acedia to share
a global namespace that provides an access to important variables
(such as `Acedia` reference) and functions.
We add a `Global` singleton and `AcediaActor` / `AcediaObject`
base classes with a quick accessor to it's instance (`_` / `_()`).
Add class that can automatically perform defined tests on user request.
Developers that wish to implemet unit tests for some functionality
must extend that class (`TestCase`) and add it to the manifest,
so that Acedia can read, register and later use it to perform tests.
Previous description understated the effects of the `allowNegativeDosh`
flag. Effects are much more common and significat that previously
thought because of game behavior on filling ammo for one or all weapons.