Moved the precompilation code into a new file, Precompile.fs, to separate it from the actual table-compilation code.
Split the precompilation/validation workflow into several smaller functions to make the code more readable and modular.
Allow a PredictiveSets instance to be passed into Slr1.upgrade to avoid recomputing it when possible.
Moved the PrecedenceSettings compilation code back into the Compile module.