Implement __getitem__ and __setitem__ in ColorArray

Close #388
I would add some `assert_raises` for some cases you'd expect to catch failures for (especially if you expect users might encounter them), e.g. the things that you `raise ValueError` for.