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!
For security reasons. Until Ruby 2.2, symbols aren't collected by the GC. If an attacker sends thousands of requests with different params, the process will increase the memory heap. This is my first motivation for doing whitelisting.

http://lucaguidi.com

> On 04/lug/2014, at 20:14, Matthew Bellantoni <notifications@github.com> wrote:
> 
> In lib/lotus/action/params.rb:
> 
> >        private
> > +      def _compute_params
> > +        params = Utils::Hash.new(_extract).symbolize!
> Can you explain why it should be delayed? I did this because I don't want to have to do two lookups (once for a Symbol and once for a String) during the whitelist filtering.
> 
> —
> Reply to this email directly or view it on GitHub.