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.
That's what I started to do, but it ended up being too complicated (the code for the different kinds of interpolation is significantly different in GLSL). And don't forget we have to support multiple and non-uniform control points, which makes the code more complicated.

Finally, although linear and discrete colormaps are similar mathematically (different interpolation functions), you may not use them exactly the same way. For gradients you want to control the colors at the control points, whereas for discrete colormaps it is more natural to control the color in the *bins* instead.

I'd say we can keep things as they are now, and we can always merge the classes later if they happen to share a significant amount of code.