ProxyFactory implementation

So this is heavily a WIP, only a first rough version where practically nothing works, apart from generating (unfunctional) proxies.

I wanted to limit this to only the ProxyFactory, but I decided to also refactor several things in the process as everything would be a mess otherwise.

* The functionality of Mapper has been distributed between the ProxyFactory, MetadataFactory and a Hydrator
* Constructors and dependencies are a bit clearer now, still a lot of mess though, no more optional dependencies that end up initializing new objects that could be singletons.
* The Manager (which I think we should call DocumentManager) now takes a Configuration object that handles the initialization and setting up of most classes so they can be nicely hooked up together. In the future the Configuration could be used as a container for the dependencies to make sure things are only initialized when needed.

I didn't bother rewriting the tests for now, only for the generation of the proxy. I will probably leave most of them last.

Before I continue, any objections against the refactoring I started? I admit its much more than I planned to do in this PR.