Add [] operator and has_key? to DataStore to make DataStore act like a hash

This is another option to address #872. It simplifies the code needed to check for the existence of data before trying to access it. For example:

```ruby
s3_sync.aws_access_key_id     = data[:secrets].try(:aws_access_key_id)
s3_sync.aws_secret_access_key = data[:secrets].try(:aws_secret_access_key)
```

This is redundant with pull request #878