Fixes COMETD-447 (Client-annotated services do not restore
subscriptions on re-handshake).

Also fixed memory leaks in case of deprocessing, where listeners,
subscriptions and sessions were not removed from maps.
Updated test to handle also primitive types.
Improved and corrected doStart() and doStop().
Introduced serialize() and deserialize() to give subclasses control
of the JSON representation.
Partial work on COMETD-450.
Fixes COMETD-452 (OortMap should allow generic keys, not only String).

Now OortObject has two methods, serialize() and deserialize() that
allow subclasses to convert JSON representations so that type
information can be saved and restored.
Merged branch '2.7.x' into 'cometd-450'.
Suppressed warning.
Improved start/stop behavior, and introduced Oort.CometListener
.Adapter.
Fixed test that was restarting the server: only the connector needed
to be stopped and restarted, otherwise the test fails.
Restarting the whole Server object creates another BayeuxServer,
but a correspondent new Oort was not created.
Fixes COMETD-450 (Seti.isPresent inconsistent across nodes).

Now Seti uses a mechanism similar to OortObject to push its state
when comet joined events are received, as well as broadcasting its
state on startup.
Introduced OortMap.putIfAbsent() and made OortObject.Data generic to
avoid compiler warnings.
Wrote an example of how it would be possible to use mutable classes
as values of an OortMap.