Changed width/height/channels to return one for low-dimensional buffers.

We view color images as three-dimensional arrays. So when you ask for the
channel count of a two dimensional buffer, that's short-hand for asking
for the extent of the buffer in dimension 2, and if you ask for the extent
of a buffer in a dimension beyond its dimensionality, that's an error.

This is confusing behavior. Given that width, height, and channels calls
are sugar for a convention, I've made those calls return one for buffers
of fewer than the appropriate number of dimensions. The Image::extent
call retains its old behavior.