Adding array setters for terms

Previously setting a value by array index would fail silently. Now you can set properties with []= (e.g. ```subject.title[1] = 'A title'```).

The tests probably need a refactor, since they were pasted in wholesale from https://gist.github.com/elrayle/11a75d47f8cb9b1932e5 and probably repeat some coverage from elsewhere in the suite.

I added a test for array out-of-bounds conditions, but am thinking more about how to handle nil values.  Currently:

```
   subject.aggregates = nil # clears value
   # but
   subject.aggregates = ['blah', 'blah2']
   subject.aggregates[0] = nil #raises error
```

Perhaps the last case should result in ```subject.aggregates # => ['blah2']```?
Redundant `self` detected.