Added sparse implementations for 3D facets (and unit tests)

There are 62 unit tests for both dense array-based implementations and map-based sparse implementations to ensure that they work correctly, but also consistently.

This also makes Core use 3D sparse facets for trees.

Side note: I changed BaseFacet3D to throw IllegalArgumentEx instead of ArrayIndexOOBEx, because it was implementation-specific (for arrays).