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
reuse the extensibility logic in that consumers (other static utility
classes) can now invoke the get(label) method of Axes to define new
AxisType constants, which are then stored centrally.

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

Tests were updated as needed to reflect the removed AxisTypes and new
DefaultAxisType class.
AxisType: Deprecated isXY and isSpatial

Fundamentally, AxisTypes should not be defined by their label. The label
uniquely identifies and distinguishes axes and these methods are tied to
a 5D model, where X and Y are significant and XYZ are spatial.

To move to an N-D model, what really matters is the order of the axes
and the number of planar axes. Thus isXY and isSpatial would become
unnecessary.

These methods are thus deprecated and when conversion of consuming
(SCIFIO) code to an N-D model is complete, and propagated downstream
(e.g. to IJ2), these methods can be removed.
Merge pull request #31 from imagej/axis_grouping

Refactored Axes from a sort of hybrid enum/static utility class to a pure static utility class. The enum aspect was unnecessary and not easy to leverage, and it was confusing to code against both Axes and AxisTypes.

Axes is now purely a static utility method for creating AxisTypes. It has a fixed set of standard axes (XYZCT) and methods (#get) to create axes with custom labels, or unknown (#unknown()) axes.

Consuming software requiring an additional set of standard axis labels should create new static utility methods that make calls into Axes.get to provide their custom AxisTypes. This will ensure one central location (the Axes class) for all AxisTypes.

Also, as we are moving to a more flexible Axes model, the AxisType isXY and isSpatial methods were marked deprecated. These methods imply a very specific use of axes, and attach metadata unnecessarily to the AxisType class.

When all consumers (SCIFIO and IJ2 specifically) are converted to N-D models these methods can be removed.
Support a UnitService

The initial implementation is using Ucar's udunits package. This pulls a NetCDF
dependency into imglib2-meta. Also imglib2-meta now depends on scijava-common.
DefaultUnitService implements UnitService iface

Oops. An oversight.
Gauss3: fix bug in computation of temporary image dimensions.
Gauss3: added static method with numThreads parameter and method to compute halfkernel sizes.
Unit api now supports more conversions

One can define units that are related by scale, or by scale and offset, or
by any user defined mapping.

As part of this change we are no longer relying on the netcdf library but on
its related subproject udunits whose artifact is located in imagej.net's
Nexus.
Merge branch 'unit-service'
Bump to pom-scijava 1.79

Signed-off-by: Jenkins <jenkins@dev.loci.wisc.edu>
Break out unit service tests
Improve invalid conversion test
added two Intervals utility methods: largestContained(Integer)Interval and smallestContaining(Integer)Interval.
Fix value()'s javadoc
Axes: restore "values" functionality

As Axes used to be an enum, it had an implicit "values" method, which
was lost in conversion to a static utility class.

Added a "knownValues" method which now returns an array of all known
AxisTypes.
DefaultAxisType: restore inherited interfaces

The CustomAxis class that DefaultAxisType replaced was nested under the
former Axes enum, which caused it to inherit Serializable and Comparable
implicitly through the Enum type hierarchy.

To restore these API contracts, DefaultAxisType now explicitly
implements Serializable and Comparable<AxisType>.
Merge branch 'restore-axes-methods'

Several implicit contracts regarding Axes and Axes$CustomAxis were lost in the
conversion to a static utility class.

This patch restores those API contracts to facilitate backwards compatibility.
Merge branch 'master' into knip