Generalize DropwizardAppRule

`DropwizardAppRule` uses reflection to invoke the nullary constructor of the target `Application`. However, applications that don't define a public nullary constructor cannot be used.

This affects all Scala Applications, because the app is defined as an Object, (which has a private nullary constructor).

This will also affect apps that are parametrized in some way, or that protect the nullary constructor (e.g. for Singleton `Application`s).

By introducing a `newApplication()` method and providing the current, reflection-based implementation as the default, users may override this to provide instances of their application themselves.