AOT WIP, DO NOT USE
considerable amount of simplification to match logic, all tests except
the recur cases pass, importantly the ones concerning match order. the
output looks like it will need some optimization but it will be far
easier to incrementally improve with the complexity removed.

`group-rows`, `group-vector-patterns`, `collapse`,
`column-constructors` all removed, this code tried to cleverly
organize users clauses. This was a half baked step to predicate
dispatch. We need core pattern matching to work first.

Minor refactoring to adjust for the deletions.
remove silly bit of `groupable?` logic around wildcards, for the recur
case we need to handle this in `matrix-splitter`
to difficult to test core.match just by testing the external api,
adding tests for the implementation. In order to simplify testing
making sure we have equality for patterns (yet another reason we
probably should have just used maps for our internal representation +
multimethods)
fix typo
can test pattern-rows for equality
switch WildcardPattern to deftype as needs special notion of equality
since we want all _ wildcard to be equal, otherwise the gensyming
creates a problem. Add named field to support.

Add test cases for wildcard pattern equality
test pattern matrix equality
show that `choose-column` and `swap` work
refactor `matrix-splitter` to support implementation
testing. `matrix-splitter` now takes the matrix and return a vector
containing the specialized matrix and the default matrix.
clean up boilerplate-y `(into [] ...)`, the ctor fns now do this work
make `emit-matrix` a little more flexible. Pass along optional third
parameter to control emission of the default line. this allows the
debug tool `build-matrix` to not automatically insert the default
making it much more useful for debugging / testing
add test - `matrix-splitter` working as expected!
`matrix-splitter` test in the presence of `recur`
add `with-recur` debug helper
remove the `groupable?` hacks around wildcards for now, add test
showing that next step of specialization in the presence of recur
pattern matrix specialization implementations should not try remove
non groupable constructors as they were placed there explicity by
`matrix-splitter`. one remaining failing test.
we need to pass everything along since we don't have backtracking,
match-order-6-recur however still failing.