Fix #66; remove allow_nil

Replaced "allow_nil: true" with "default: nil".
Add inputs, which are casters + filters

I'm not a fan of the name, but I didn't want to replace anything just
yet. In the future, I suspect they'll be called filters.
Pass blocks around

Silly oversight on my part.
Replace casters and filters with inputs

The tests are broke as hell, but interactions actually work.
Fix most of the tests
Remove obsolete test

The functionality has changed. I'm not entirely sure how it should
behave. Regardless, this can be tested in hash_input_spec.rb instead.
Remove casters and filters
Rename inputs to filters
Cleanup
Allow subclasses that don't follow the naming scheme
Extract common method_missing functionality
dup options
Switch to better error type
Force hash defaults to be either `nil` or `{}`
Name first parameter to method_missing
Fix specs
Allow wildcard hashes with `strip: false`
Use alternative exception syntax
Add a reader for options
Make Filter#filters and instance of Filters