Updated architecture so that more compiler backends can be added more
easily in the future.
Also fixed a bug where modifying PDB files would result in file access
exceptions as it was happening after PDBs were already loaded.