Lcg/chef 12 attr

See https://gist.github.com/danielsdeleo/da9a8d9a91cc8c2781b0
I'm thinking about the other case, where you could end up calling, e.g., `"string"["foo"]` or `["a", "b"]["foo"]` or `true["foo"]`. Seems like it's kind of insane attribute usage that could get you there, maybe something like:

```ruby
node.default["foo"] = true
node.rm("foo", "bar")

node.default["foo_two"] = [1,2,3]
node.rm("foo_two", "bar_two")
```

You're right about arrays though, the user could know there's an array there and pass a valid array element reference argument, though if pass the wrong type in, the error message is pretty awful:

```
[1] pry(main)> [1,2]["foo"]
TypeError: no implicit conversion of String into Integer #lolwut?
```