DefaultCalibratedRealInterval: fix bug during ctor

We avoid calling instance methods during construction, in case
subclasses override those methods in such a way that they do not work
yet when called from the parent class.

In this case, we have all the information we need (i.e., the number of
dimensions) and can pass that information to the assignDefaultAxes
method, such that calling numDimensions() becomes unnecessary.
Make some default implementations final

Firstly, this is done because these default implementations in
particular are really intended as *default* ones, not starting points
for subclassing. If you want to subclass, use the corresponding
Abstract class instead as the extension point (note this change does not
finalize any Default implementations which lack a corresponding Abstract
layer).

Of course, this is breaking change to downstream code that extends
DefaultCalibratedSpace or DefaultCalibratedRealInterval
(DefaultLinearAxis did not yet exist as of the last release version).
But there is a straightforward solution: simply extend the corresponding
Abstract class instead (i.e., AbstractCalibratedSpace or
AbstractCalibratedRealInterval).

Preventing subclassing of these classes avoids potential problems
downstream. E.g.: in ImageJ2, AbstractData currently extends
DefaultCalibratedRealInterval, and uses the
DefaultCalibratedRealInterval(RealInterval) constructor, which calls the
setAxis(CalibratedAxis, int) to populate some default axes.
Unfortunately, some subclasses of AbstractData (e.g., DefaultDataset)
override that setAxis(CalibratedAxis, int) method to reference an
instance field populated in the DefaultDataset constructor *after* the
super constructor call. In other words, that instance field is still
null at that point in time, resulting in a NullPointerException. While
it would be possible to "code around" the problem, really an easier
solution is to simply change AbstractData to extend
AbstractCalibratedRealInterval instead to avoid the explicit setAxis
calls entirely, which DefaultCalibratedRealInterval makes with the
assumption that nothing else will override that method anyway.