Add implicit reverse references.

This pull request adds support for resources to reference their parents,
for example:

```python
obj = s3.Object('boto3', 'sun.jpg')
print(obj.bucket.name)
```

This works by using the `subResources` feature of the resource JSON
description format. Since `Object` is listed as a child of `Bucket`
in the bucket's sub-resources, and we know the identifier mapping
from and object's `bucket_name` to a bucket's `name`, we can create
the reverse reference just like if an explicit `hasOne` was defined
in the JSON.

Additionally this fixes the SQS resource JSON to no longer explicitly
list the Message hasOne Queue relation, since the Queue has a Message
in its sub-resources.

Adds a test for the resource model as well as modifies the references
test to ensure both normal and reverse references become attributes
on the instantiated resource.
Fix Python 2.6 problem
Implement resource equality based on identifiers.

This pull request adds two related features. First, it adds resource instance
equality by comparing the classes and identifiers of two resources. If they
share the same class (e.g. `s3.Bucket`) and the same identifiers (e.g.
`name`) then they are considered equal.

```python
>>> b1 = s3.Bucket('boto3')
>>> b2 = s3.Bucket('boto3')
>>> b1 == b2
True
```

Related to equality, this also implements reloading of attributes
after an action has been performed. Imagine the following scenario:

```python
>>> o = s3.Object('boto3', 'test.txt')
>>> o.put(Body='hello')
>>> print(o.last_modified)
datetime(2014, 10, 31, 0, 0, 0)

>>> o.put(Body='hello, world')

>>> print(o.last_modified)
datetime(2014, 10, 31, 0, 0, 20)

>>> o2 = s3.Object('boto3', 'test.txt')
>>> o == o2
True
>>> o.last_modified == o2.last_modified
True
```

Updated documentation and tests to reflect these changes.
Dependency update: botocore
Add options for constructing clients & resources.

This pull request adds all of the options available through Botocore's
client constructor for making Boto 3 clients and resources, including
credentials, region, SSL, and other settings.

```python
sqs = boto3.resource('sqs', region_name='us-west-2')

s3 = boto3.resource('s3', aws_access_key_id='YOUR_KEY',
                    aws_secret_access_key='YOUR_SECRET')
```

It also removes the default of `'us-east-1'` and requires you to set
a region. The docs have been updated (slightly) and the tests have
been updated to reflect this. I plan to flesh out the configuration
documentation in the future.
Fix test hasattr
Merge pull request #9 from boto/references

Add implicit reverse references. Fixes #9.
Fix typo, split up test
Add a small note about region/aws key/etc [ci skip]
Merge pull request #11 from boto/equality

Implement resource equality based on identifiers.
Split up tests, remove region check
Merge pull request #12 from boto/region-config

Add options for constructing clients & resources.
Switch to Botocore data loader.

This pull request changes Boto 3 to use the Botocore data loader for loading
resource JSON description files instead of the custom loading logic that was
in place. As a result, a couple of things have changed:

* Removed all JSON loading code from Boto 3
* Removed `ResourceFactory.create_class` in favor of `load_from_definition`
* Added Boto 3 resource data path to Botocore's loader
* Added functionality to get the latest resource version
* Implemented `Session.get_available_resources`
* Updated and removed some tests
* Updated docs

Unfortunately, Botocore requires a very specific folder structure, and at the
moment Boto 3 is not using it. Because of this I wrote custom logic to find
resource JSON files and find the latest version, some of which should be
migrated into Botocore in the near future.
Remove old compat code that is no longer required
Review Feedback

* Clarify some code with comments
* Do not include public credential in `repr(session)`
* Simplify test