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 
Same thing, is there a way we can avoid having to repeat adding the params to this method as well as new attrs are added to resource meta?