Generalizing all_tri to handle 3D, adding support for PRISMs

In theory this branch adds the ability to split prisms into tets (and makes it easier to add a future capability to split pyramids and hexes into tets).

In practice the refactoring here may have even broken the ability to split quads into tris, and the whole thing needs more testing before merge.