Nested objects serialise and deserialise properly

 - Added a recursive serialisation and deserialisation function to creation.py so that nested objects continue to serialise/deserialise themselves
 - Changed the format of serialisation dictionaries
 - Added an assign_objects function to game.py that adds objects to other objects (in response to "put obj in container" or "get obj from container") so that when container.deserialise() is called, the container object can update its contained objects
 - Added a test to test all of this new functionality