Add references to resources.

This change exposes `hasOne` and `hasSome` references on resources, such as
an EC2 `instance.subnet` or `instance.vpc`. Both the subnet and VPC are
resource instances that are created from data available on the instance. In
this case via the `subnet_id` and `vpc_id` data members. Allows code
like the following:

```python
import boto3

ec2 = boto3.resource('ec2')
for instance in ec2.instances.all():
    print(instance.vpc.tags)
```

Updates the resource data model, updates and adds tests.

cc @jamesls, @kyleknap
Can you explicitly state the argument that you are passing in instead of doing positional arguments? It is hard to follow especially since the arguments deal with large python dictionaries. Or breaking it up like you did in previous tests such that you are only passing the variable to the constructor as opposed to the specific complex value.