Merge pull request #94 from Ryman/generics

Flexible route handler return types
refactor(mimes): add variants to give type safety

BREAKING CHANGE
This will break any calls to get_media_type in mimes, or
content_type on response.

To fix code broken by this, use the equivalent variant, e.g.

If you called content_type(x), then you can use mimes::x

If x starts with a number, then it will be prefixed with Media,
otherwise it will have its first letter capitalized and all -
characters replaced with _