Changed context handling from integer IDs to object oriented approach

Context identities are now conveyed via an object reference rather than a simple ID. This has to be made more elaborate still, as contexts cannot be ended by calling `end' on them. This will be addressed shortly.
Restructured Context handling in the client lib, making it more object-oriented

The Context objects can now be initialized with a BeliefstateClient instance, allowing the Context object instances to operate context starting and ending themselves. Parallel logging of timelines is still not possible, but the object oriented infrastructure is now in place to support it.