Add support for loading clients by API version

To load a client by a given API version, pass the "apiVersion"
setting to the constructor:

    var ec2 = new AWS.EC2({apiVersion: '2013-02-01'});

A version date can also be "fuzzy". If there is no exact matching
API version, the SDK will look for the latest matching date. For
instance, passing '2013-12-12' will still use the above EC2 API
version of '2013-02-01' (and any subsequent version until the
end of the year).

You can also pass the value 'latest' to grab the latest API version
available for the service:

    var ec2 = new AWS.EC2({apiVersion: 'latest'});

Finally, you can pass 'apiConfig' to a service to create one-off
clients using a loaded API configuration:

    var myConfig = require('myApiConfig');
    var myClient = new AWS.Client({apiConfig: myConfig});
Update console script to work with lazy API versions
Don't need to return this
Allow unknown keys when initializing clients so custom config sticks around
Add with() helper method back to console
Fix formatting
Add tests for loading of clients, fix existing tests
Rename loadClient to loadClientClass
Add global apiVersion and apiVersions config settings

apiVersions is a map of service identifiers and their api version
value. apiVersion is a global value used for all services. apiVersions
overrides the global apiVersion value. The string 'latest' can be
used in either location to represent the latest API for a given
service (or all).

Example: Creating a manifest of API versions

```js
AWS.config.apiVersions = {
  ec2: '2012-03-04',
  dynamodb: '2011-12-05',
  s3: '2006-03-01',
  ...
};

// constructing an EC2, DynamoDB, or S3 service will use
// the respective API versions
```

Example: Overriding the global API version

```js
// use latest for most services
AWS.config.apiVersion = 'latest';

// lock dynamodb to earlier version
AWS.config.apiVersions = {
  dynamodb: '2011-12-05'
};
```
Merge pull request #90 from aws/apiconfig

Add support for API versioning