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)
Here and elsewhere, do we imagine a case where the user will try to load a tif with a different extension? Is this to cover things like ``tif`` vs `tiff``?