IntervalIndexer: revise indexToPos(array) logic

The array-based indexToPosition methods were essentially all repeating
one another. It was discovered that these methods did not handle the
special "-1" index appropriately, which is supposed to signify that the
position "will be at the origin after one fwd() call", essentially.

Instead, these methods would use the standard index to position
algorithm, which would create incorrect arrays (e.g. if the array was
[1, 1, 5] the -1 index would give position [0, 0, 1] instead of [-1, 0,
0] as desired.

All array-based indexToPosition methods now funnel through a single new
SciJava PrimitiveArray signature. This method can operate on all arrays
agnostically, thus the logic for creating a starting position when given
index=-1 was added here as well.

Note that the base primitive array accessor methods cause autoboxing,
thus specialized casting methods were created to access the underlying
primitive arrays directly.
IntervalIndexer: fix -1 index - positionable

Added a fix to the indexToPosition(long, Dimensions, Positionable)
signature to properly account for an index value of -1. This signifies a
desired position of "1 step before the starting position". Thus we set
the position to [0,..0] and move back one in the first dimension.