Refactor LegacyImageOpener to LegacyOpener

We want to broaden the functionality of the LegacyImageOpener. Instead
of just directly using SCIFIO to open a provided dataset, we should be
delegating through IJ2 to get the full "File>Open" experience. This
requires the potential to add hooks in the IJ.open method, which
requires a more general LegacyOpener.