Add JSONClient as a sample

It's not thread-safe. Just add as a sample.
Allow to pass :body to options method

httpclient.options(url, :body => ...)
Closes #215
Make delete and options accept :query argument

If user passes only :query in the argument, delete method parses it as a
body and options method parses it as a header. Closes #136
Allow post and put accepts :query parameter

Code looks weird but needed. To keep compatibility,
  post('http://localhost/', :query => query)
is a POST method WITHOUT query and with "query=query" BODY. Now
HTTPClient accepts :query parameter if :body parameter given with it.
  post('http://localhost/', :query => query, :body => body)
is a POST method to http://localhost/?query with 'body' as message-body.
Closes #83.

Also this commit simplifies argument handling so that we can keep
post/post_content/post_async in sync.
Merge branch 'master' of github.com:nahi/httpclient