Support arrays in the object tree

works for things like:

```javascript
// I want to get a very specific value, but not cause javascript to totally crash
// if any property is undefined
_.deepGet(collection, 'level1[0]level2');

// or

_.deepIn(collection, 'foo.bar["baz"][0].qux');
```
Yes, it should be the 3rd option. It adds nothing for that example, but allows interstitial arrays, e.g.

```
_.deepIn(foo, 'bar.baz[0].qux');
```