making peace with the fact that the evil address manipulation tricks should assume dense structure,
 • the generic array api should work nice with sparse, AND
 • branching of handling a maybe type is absorbed by the extra lookup work in the sparse case

QUESTION: do i need a richer address type for sparse? Or should sparse combinators just do a bit of extra hackery?
abstract over the notion of address for the generic mutable array typeclass.

This is motivated by the fact that for 2dim sparse array formats, the notion of Address needed
for efficient "toIndex" and "nextAddress" computations actually has *TWO* integers,
both the outer lookup table and inner value / index table addresses