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?
I'd sprinkle this with @Nonnull