Resource management refactor

Alternative to #71
Fixes #67, discussed in #65

With this technique, you extend `ResourceManager::Resource` for each kind of resource you want, and then from a `ResourceManager` instance you request specific resources of specific types. It's not a singleton anymore, instead there is a `ResourceManager` per instance of `Application`.