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):
- Check output looks sensible
- Write unit tests
- Add doc strings
- Add short tutorial (?)

Anything else missing?
You should not add a new `reference_image` function here.
Use (and improve if necessary) the existing [make_header](https://gammapy.readthedocs.org/en/latest/api/gammapy.image.make_header.html) and / or [make_empty_image](https://gammapy.readthedocs.org/en/latest/api/gammapy.image.make_empty_image.html) functions.