Updated SourceCode implementation
 * Moved source to its own file
 * Changed SourceCode to an interface
 * Added 2 implementations for SourceCode interface, one for source file, one for actual string of source code.