Feature/extracting dropwizard platform

i've extracted the `Platform` interface and renamed the original one to `DropwizardPlatform`.

The original platform class leaked the Dropwizard-specific methods that I felt would be detrimental long term to Graceland. If we change how we launch a Dropwizard application, we couldn't stop people from directly accessing the `run()` and `initialzie()` methods. Now we can...

Any other platform that's built in the future should also keep to the style of having a protected constructor and a public static factory method that returns an instance of `Platform` to keep the abstraction.

@graceland/users thoughts?
true. i meant protected from outside of the package. the goal is have the smallest surface area necessary so we can refactor easier :-D

if it was protected, could we still access it inside of a unit test in the same package? because i'm doing that a bunch now...