Big Application refactoring

* Made Application a Pimple container
  * Made several things services in the Pimple container
* Task libraries now require register() and boot() methods, which
  both receive the Application instance
* Task libraries must be registered by calling either 'register()' in
  the build config, or Application::register()
* Moved task creation to Application class
  * Application now has "task" and "fileTask" methods