Expanded service level documentation for configuration.

Added sections for working with `:region` and `:credentials`.
Merged the 4 signature plugins into Aws::Plugins::RequestSigner.
Renamed test file to match class under test.
Added the new RequestSigner plugin.
Added specs for Aws::CredentialProviderChain.
Moved the `:credentials` configuration option into the RequestSigner plugin.

Removed the Credentials plugis as it only added configuration and no
behaviors.  Moved the Credentials plugin tests into the
CredentialProviderChain specs.
Minor doc fix.
Implemented a pending test on RequestSigner, that is raises an error when credentials are not set.
Internal refactor of Seahorse::Client::HandlerList

Simplified the process for copying a handler. Also removed
support for registering handler instances instead of handler_classes.
This was un-used functionality and is prone to bugs when the
handler is shared outside of a single request.
Moved HandlerList::Entry to a its own ruby file.
Removed require statement for 'uri_template', not used.
Added a module for each service.

Previously, each service had a single "client" class that
extended `Aws::Service`. This client class constructed and
returned versioned clients.

This commit makes the service a module and adds a proper client
class.

    Aws::S3 # a module which contains:

    Aws::S3::Client
    Aws::S3::Errors

The `Client` class inside the service module is now the preferred
interface for constructing a service client.

    # deprecated, but still works
    Aws::S3.new

    # new interface, prefered
    Aws::S3::Client.new

The `Client` class still constructs and returns versioned clients:

    Aws::S3::Client.new
    #=> #<Aws::S3::Client::V20060301>

This allows us to add additional classes at the service level,
especially resources.  This also makes the v2 SDK much closer
to the v1 SDK in structure.
Updated the API documentation to reflect the service/client changes.

Updates the API reference document to reflect that
each service has a module with a `Client` class and
an `Errors`module.
Bulk updated APIs.

The reason for this update was to pickup the normalized documetnation
strings. This removes a lot of line noise including extra whitespace,
line breaks, wire protocol examples and more.
Removed Seahorse::Client::Http::Endpoint.

Replaced this with URI::HTTP and URI::HTTPS from Ruby
stdlib. This affects any plugins/handlers that manipulate
the http request endpoint.
Simplified the S3 location constraint plugin.

This also resolves one of the test failures from the
previous commit/refactor of endpoints.
Fixed an issue with HandlerList in how it copies entries.
Replaced fragile plugin specs with function S3 client specs.

The S3LocationContraint plugin specs tested the plugin
interfaces but did not ensure it was:

* applied to s3
* had other depdencies present, such as a required region

Moved these to a functional test of S3 that stubs only
the http responses.
Moved Util.underscore from Aws to Seahorse.

Added a method for registering irregular underscore
inflections so that the SDK can register AWS specific
irregular inflections.