code clean up, removing unnecessary classes and methods, documentation
simplifying things by storing inference indexed by context roots rather
than contexts themselves. then we won't need to think whether to pass
the main contexts or a local copy.
finally committing all test stuff for benchmarking tracing