Switch `resource.meta` to be an object.

This changes the behavior of the meta object in a **backward-incompatible**
way. It goes from being a dict to an instance of a `ResourceMeta` class.
Example:

```python
import boto3

s3 = boto3.resource('s3')

# The old way
s3.meta['service_name']
s3.meta['client']

# The new way
s3.meta.service_name
s3.meta.client
```

cc @jamesls, @kyleknap 
Oh, also, I think we should fail gracefully if we are passed a non ResourceMeta type, i.e `resource.meta == 'foo'` should return False, but it looks like this will just raise an AttributeError right?