WIP: Add offset, symmetrical normalizers

Trying to close https://github.com/matplotlib/matplotlib/issues/1806

Not currently on  a good machine for development, but I think this pretty straight-forward, so hopefully Travis a test runner will suffice...

`OffsetNorm`: This let's you set vmin, vcenter, and vmax. The use case for this is when you have data ranging from e.g., -1, to +2, and you  want the the white/gray part at 0, but would also like to use the full range of the red scale. So:

```python
offset = mcolors.OffsetNorm(vmin=-1, vcenter=0, vmax=2)
offset([-1.0, -0.5, 0.0, 1.0, 2.,])

#prints
[0, 0.25, 0.5, 0.75, 1.0]
```

Next I'll add `SymNorm`, that will look at the absolute values of vmin and vmax to produce:
```python
sym = mcolors.SymNorm(vmin=-1, vcenter=0, vmax=2)
sym([-1.0, -0.5, 0.0, 1.0, 2.,])

#prints
[0.25, 0.325, 0.5, 0.75, 1.0]
```
@tacaswell  yup. Got that written, Will default to half-way in the middle if not specified. 

Thought about looking at the signs of vmax and vmin to  see if 0 would be a good choice, but I think edge cases of -0.001 and 1000 make that more complicated than it means to be,