Massive refactoring

Change package names.

Use Shapeless records.

Use Kleislis that expect a Request input instead of carrying request
references around everywhere.

Set the readers up to be more flexible so that body parameters can be
supported in the future.
Add spec - accessing non-existent fields shouldn't compile
Oops this shouldn't be there
Break into smaller files
Make param reading more flexible
Use tagged types for Params and some organization
Make ParamReaders more composable
Add number param readers
Add header readers
Add Swagger support
Add Swagger support for required params
Add support for default values
Use Scalaz tags instead of Shapeless tags
Add Swagger support for default params
Merge branch 'master' into gutting