Loads an application. This is responsible for instantiating an application given a context.
Application loaders are expected to instantiate all parts of an application, wiring everything together. They may
be manually implemented, if compile time wiring is preferred, or core/third party implementations may be used, for
example that provide a runtime dependency injection framework.
During dev mode, an ApplicationLoader will be instantiated once, and called once, each time the application is
reloaded. In prod mode, the ApplicationLoader will be instantiated and called once when the application is started.
Out of the box Play provides a Java and Scala default implementation based on Guice. The Java implementation is the
and the Scala implementation is
A custom application loader can be configured using the `application.loader` configuration property.
Implementations must define a no-arg constructor.