[API] Added `Utils.__validate_and_extract_params` to encapsulate parameter whitelisting/extraction/verification

    __validate_and_extract_params { :foo => 'qux' }, [:foo, :bar]
    # => { :foo => 'qux' }

    __validate_and_extract_params { :foo => 'qux', :bam => 'mux' }, [:foo, :bar]
    # ArgumentError: "URL parameter 'bam' is not supported"
[API] Changed, that API parameters are not only whitelisted, but verified

Previously, valid parameters for each API were extracted from the arguments Hash,
and the rest was silently discarded.

This could lead to hard to debug behaviour or hideous bugs due to typos. To prevent this,
the arguments Hash is compared to a list of valid keys. When an invalid key is being
passed to an API, `ArgumentError` exception is raised.

For example:

    client.search :search_type => 'count', :qwertypoiuy => 'asdflkjhg'
    # => ArgumentError: URL parameter 'qwertypoiuy' is not supported

Furthermore, consistency with the Python and PHP clients in this regard is achieved.