Axes: refactor to static utilty class

Having Axes as an enum, even an extensible enum, was not overly helpful.
Because ultimately most operations are on AxisType itself, you can only
take advantage of the Axes enum if you type everything as an Axes, which
then excludes any other AxisType implementation.

Instead, it makes more sense to just use AxisType and turn Axes into a
static utility class that defines a set of AxisTypes. This allows us to
move the extensibility logic to an abstract superclass that other
consumers can now extend and thus contribute new AxisType constants.

This also was not possible before with Axes as an enum, as it contained
the extensibility logic for creating and caching new AxisTypes, but
nothing could inherit from it - because it was an enum.

Axes now defines the core XYZCT axes, with the more "specialty" axes
moved to SCIFIO.
Tests: restrict axes to XYZCT

As the non-core Axes were moved to SCIFIO, their (arbitrary) use in the
various Typed and Calibrated axis/space/interval tests has been changed
to XYZCT references.