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 parameterized in some way, or that
protect the nullary constructor (e.g. for Singletons).

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.
Merge pull request #367 from nicktelford/feature/generalize-dropwizard-app-rule

Generalize DropwizardAppRule