Add 3D mesh generation capability to ImageMesh

The implementation is currently based on ImageFunction's, but we
accept slighly more irregular input without erroring out.  ImageMesh
will eventually provide the stack of filename strings to
ImageFunction, and thus ImageFunction will require an underlying
ImageMesh to work.  Note that ImageMesh still does not depend on VTK,
but it could if our simple 'file' command approach is found to be
insufficient.

Refs #3976.
Adding a test of 2D and 3D ImageMesh.