The main compiler abstraction trait. Currently mostly represents a wrapper around compiler
binary aware of the version and able to compile given input into CompilerOutput including
artifacts and errors.
Parser of the source files which is used to identify imports and version requirements of the
given source. Used by path resolver to resolve imports or determine compiler versions needed to
compiler given sources.