WIP: overhaul matplotlib imshow plugin for new data policy

See point 3 of #1266. 

Some of the new code is a little bit messy, so feedback welcome.
@stefanv see below: any time this happens, we display a colorbar. I think this is the best compromise. I *hate* having to dig in when my image has some range that I didn't expect. This way, the user knows instantly.