Changed all entities to use an object for initialisation parameters, began work on entity serialisation

Signed-off-by: Sam Hellawell <sshellawell@gmail.com>