Added support for NChannelImage and ExtendToNChannel


Sorry for all the previous open/close pull requests. This is the only merge to look at.

Where is this code exactly? Random state is an evil that I insist is controlled properly! I am wondering if you could use something out of ``imagen.random`` instead of requiring this class to have random state.