Changed URL extraction in Elasticsearch::Client to allow more flexibility

Previously, it wasn't possible to fully configure the Elasticsearch endpoint URL, eg. to allow `https` protocol,
to pass HTTP Basic Auth credentials, or to configure a URL prexic without implementing a custom transport.

Now, any URL is handled automatically (using `URI.parse`):

    Elasticsearch::Client.new url: 'https://myserver:4430/search'

Code, tests and documentation have been updated accordingly.
Changed the URL-escape ("urlencode") behaviour in the `Utils` module

Previously, the `Elasticsearch::API::Utils.__escape` method was using `URI.encode`,
which escaped only characters, which shouldn't appear in URLs "naked".

This was inconsistent with other clients, and also made it cumbersome when trying
to eg. index a document with `type: "mynamespace/model" -- as is common in Rails applications.

With this change, `__escape` uses `CGI.escape` -- or `EscapeUtils.escape_url` when available --
to perform a *full* URL-encoding of the passed in argument.

`__pathify` has been changed to not perform any escaping, and `__listify` was changed
to escape all list items separately.

Related: #7
Changed the behaviour of URL-escaping across the API modules

Based on changes in the previous commit, updated the logic within
API modules to perform "urlencode" consistently, and updated
the test suite to reflect the behaviour.

Closes #7