Param whitelisting

This pull implements parameter whitelisting as laid out in proposal "A" in issue #22.  This does not implement all of the validation functionality outlined there (just whitelisting) though it's my intent to implement all of that subsequently.

Here's an example of how it's currently working.

```ruby
class Signup
  include Lotus::Action
  params SignupParams

  def call(params)
    puts params.class # => SignupParams
  end
end

class SignupParams < Lotus::Action::Params
  param :first_name
  param :last_name
  param :email
end
```

I thought it made sense to implement a subset of the functionality and get feedback on the general approach (and to make sure I haven't run afoul of any of the project's norms.)   Also, this provides a useful feature sooner than later!

I see there's been additional conversation in the issue about how this all should work, so I don't know if this work is relevant or not.

I welcome your feedback!
I'm for anonymous objects, they help Ruby GC to do less work, which improves perf.

```ruby
def _compute_params
  Utils::Hash.new(
    _whitelist(
      _extract
    )
  ).symbolize!
end
```

Note that multiple lines are nice to have, because if something goes wrong with the intermediate transformations, the stack trace will be more accurate than: `Utils::Hash.new(_whitelist(_extract)).symbolize!`, where a developer has to guess which of the three instructions generated the error.