the nextIndex operations need to be generalized lightly to provide the address *evidence*. this commit adds it to the dense layout class, still need to add it to sparse.
the sparse formulation looks like :: form -> Index n -> Maybe (Index n, address).

Also factored ArrMutable type family outside of the Array type class, wasn't technically a legal type family member of a type class, but It is needed to ensure bijectivity between the subset of pure array types that have a mutable analogue (and all mutable arrays are guaranteed to have a pure analogue)

NB: may want to generalize slightly further to have the signature  :: form -> Index n -> Maybe address -> Maybe (Index n, address)
where the Maybe address argument is an optional hint (in the form of valid address) for a "lower bound" on the range to search for the next valid index