Custom rdds: support loading from multipage tifs

Main change is supporting reading from multipage tif files using PIL/pillow, if either of those libraries is installed and available. 

A few additional minor changes:
* spark context "sc" used by ImagesLoader moved to __init__ argument from individual load method arguments
* stack dimension "dims" parameter moved to fromStack argument from ImagesLoader __init__ argument
* file extension "ext" keyword argument now exposed on all user-level functions. (Use case is for files saved with slightly nonstandard extensions, like .PNG or .tiff)
Yeah, tif vs tiff, also capitalization: .tif vs .TIF. And although ideally there'd be a fromJpeg() or similar for additional image formats, since right now this is just based on imread, it also at least allows one to call fromPng (say) to read a jpg or other formats supported by imread - not that this is behavior to encourage, but it allows for a quick workaround without additional code.