[Review]: aiaprep and Map Rotation Refactor implementation

Proper (hopefully) testing for the aiaprep() function that's been in development for quite some time, and for the associated affine transform.

While mostly finished, this still needs a few things to be done to it (ie: @Cadair still wants a few things done to it):
* [x] Modify Map.rotate() to use image.rotate(), then change aiaprep() to call Map.rotate()
* [x] Remove the C code for the Crotate function and delete relevant bits from setup.py
* [x] Normalisation of images for the skimage warp() function may not be general enough to always work - there's probably a much cleverer way of doing it.
* [x] Improve docstrings
* [x] make sure docs are being built
* [x] add more tests, and make them pass travis.
I don't really understand this.
If my `aimap.scale['x'] = 0.9` I would get:
```
scale = 1.2
scale_factor = 0.75
```
Is that right? Should I not suppose to get 0.666

This is what I've got with different values:
```python
>>> a = [0.8, 0.7, 0.9, 1.2, 2.4, 2, 3, 4, 5]
>>> [[b, round(b/0.6) * .6, b /(round(b/0.6) * .6)] for b in a]
[[0.8, 0.6, 1.3333333333333335],
 [0.7, 0.6, 1.1666666666666667],
 [0.9, 1.2, 0.75],
 [1.2, 1.2, 1.0],
 [2.4, 2.4, 1.0],
 [2, 1.7999999999999998, 1.1111111111111112],
 [3, 3.0, 1.0],
 [4, 4.2, 0.9523809523809523],
 [5, 4.8, 1.0416666666666667]]
```

Also, notice that it will fail if `aimap.scale['x']` is smaller than 0.6 because you will be dividing by 0 in `scale_factor`.

As I said above, I don't really understand what we are doing here.