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.
Well, my motivation was that they already seem to share almost all the same lines, and the docstring to be added is going to have the same property. It seems like we could do this:
```
def __init__(..., kind='linear')
    ...
    self._kind = kind
    ...

@property
def kind(self):
    """The interpolation mode of the colormap"""
    return self._kind

@kind.setter
def kind(self, val):
    if kind not in ('linear', 'zero'):
        raise ValueError(...)
    if kind == 'linear':
        self.glsl_map = _glsl_mix(controls)
        self._map_function = mix
    else:  # kind == 'zero'
        self.glsl_map = _glsl_step(controls)
        self._map_function = step
    self._kind = kind

def map(self, x):
    return self._map_function(self.colors.rgba, x, self.controls)
```
This is more DRY / compact than the current approach, seems more future compatible to me, and allows the user to set `kind` on the fly if they want.

Also, it should probably be `self._controls` instead of `self.controls` so that users don't see it when using introspection.