Automatically detect if a pattern needs backtracking
Tweak build process.
Reorg and auto backtracking

Split the compiler apart into separate files. It can now detect when
backtracking is needed for a pattern and will switch compilers as
needed.
Update readme
Assume cases with guards are unique.