Add fake application loader

Add a `FakeApplicationLoader` that wraps an `ApplicationLoader` and allows overriding various properties of the application. This complements Julien's changes in #3370.

It is possible to implement a `FakeGuiceLoader` or similar using this, but I have not added that yet due to potential conflicts with #3370 and #3442.