Safely encode reserved parameters in query string

There's a lot of confusion about this, the default implementation of
URI.escape is marked as "obsolete", CGI.escape does another work, a safe
solution seems to use https://github.com/sporkmonger/addressable without
adding a new dependecy I found that encode all not unreserved characters
(unfortunately that doesn't mean all reserved characters) it's a pretty
safe solution, see http://tools.ietf.org/html/rfc3986#section-2.3
query-add and query-set arguments validation

Validate the number of arguments when `perform` is called
Remove query string from uri when empty

When `URI.query` is an empty string `URI.to_s` will leave a trailing
question mark, the true "emptiness" for query string is obtained with
`nil`
Don't add nil as last request

A command could yield a valid request but also nil so we need to check
that otherwise nil will be added as next request blowing up everything
Moved #cookie? from Command to Request

A tiny bit of therapeutic refactoring, removed feature envy
Merge pull request #104 from gabrielelana/issue-102

Don't add nil as last request
Merge pull request #100 from gabrielelana/issue-76

Safely encode reserved parameters in query string
Merge pull request #101 from gabrielelana/issue-71

query-add and query-set arguments validation
Merge pull request #103 from gabrielelana/issue-64

Remove query string from uri when empty
Merge pull request #105 from gabrielelana/move-cookie-method

Moved #cookie? from Command to Request
Update copyright years
Credit contributor Gabriele Lana :-)
Update contributors list