Simple ioc

This starts to address the `ApplicationContext` issue (#1), making it possible to inject dependencies rather than having to build them yourself, which helps with #6.

Still need to work out the best way to initialize the `ApplicationContext` though, as it's a static so not really something I can inject as easily. Same goes for the `Resolvers`, since they are all internal you never actually access them but they need to be set up.