Image from catalog

Incomplete, work in progress - I made a pull request to allow discussion about the structure & implementation.

Note that some functions also use stuff used in npred_cube2 pull request (which is why I rebased against it in this PR).

To do (Ellis):
- [x] Check output type & format looks sensible
- [x] Ensure output values are sensible (Flux normalization)
- [x] Write unit tests
- [x] Add doc strings
- [x] Add short tutorial
Please change the plotting for sky images to use `alpy` so that the images have coordinate axes.

Here's an example that works in this case:
```
# Plot
from aplpy import FITSFigure
fig = FITSFigure(image.to_fits()[0])
fig.show_grayscale(stretch='sqrt', interpolation='none')
fig.add_colorbar()
```