Create entities from a JSON manifest

This allows entities to load from a JSON manifest containing all their components and arguments to pass to them. Each component needs to define a `.from_json` method if they require something more complicated that just a standard `.new`.