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?
The usual stuff ... add a few empty lines ... break lines or use temp variables to have line length <~ 80 characters to make the code more readable.