first pass at reflection to DRY up param parsing

WIP

Clean up parameter parsing to make it much DRYer (will help with adding new resources, parameters, etc in the future).

- [x] Add parsing logic
- [x] Use this for one resource
- [ ] Get feedback!
- [ ] Make changes, apply to rest of resources
- [ ] Figure out booleans (specifically booleans with default of `false`)
- [ ] DRY metadata
- [ ] DRY non-resource params (`total_count`, etc).

Thoughts on the direction so far?

/cc @cosn @kyleconroy 
So I felt like the API should enforce that, not the bindings. The API will respond with an error if you try to pass an invalid set of parameters. If we try to enforce that here, an API call would be prevented, but it's another layer of validation that will have to be maintained.