Validation of submitted parameter keys

Validation of all passed in parameter keys.  Check each parameter key that is passed in against the api method definition if the validate_keys option is set to true for the config.  If unknown params are passed in an UnknownParam exception will be raised.
One, more serious one, is the `to_sym` called on the user input: please use `p.name.to_s == param.to_s` instead. (ruby 2.1.1, how much i look forward for you to be our lowest supported version https://bugs.ruby-lang.org/issues/7791)