Improve color package and add colormaps

* [x] implement `get_color_dict()`
* [x] `LinearGradient` to have a default `x` argument (linearly spaced with `np.arange()`)
* [x] `get_colormaps()` to return the list of color maps
* [x] implement `ColorArray._repr_html_()` to display a color array in the IPython notebook
* [x] implement `nearest` interpolation in NumPy and GLSL
* [x] refactor in different files
* [x] add an example notebook with many colormap examples

![image](https://cloud.githubusercontent.com/assets/1942359/5209124/2bac3536-75bb-11e4-92c3-fbcb0354d810.png)

Close #413. Closes #414. Closes #646. To be continued in #648.
I don't mind having `__setitem__` throw an error, this even happens for datatypes as simple as `tuple`. However, we could make it so that `__setitem__` actually worked -- if the index they use exists, update the color in the mapping, if it doesn't, add an entry to the mapping. WDYT?

As a user I wouldn't really expect `Transform[...]` to do anything, but `Colormap[...]` is probably the first thing I would try to get a color out, so I'm okay with their access APIs being different in this case. If we go that route, then `map` should be private as `_map`, since it's not meant to be used by the user (instead `__getitem__`) is.