refactor to use a c-specific subclass

this refactors the compiler interface to be a base class
with a separate subclass for the c compiler
this makes the per-language api make sense
and lays some groundwork for pluginification

this changes the api so gdb manages the source file
however, deletion of the source file is currently handled
poorly