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!
@mjbellantoni I got it and sorry for the confusion. Because we control that requirements, I'd say to change them because of the discussion that's happening in this PR.