A refactored _get_source_files

Refactored the method so that it is no longer recursive.
Merged the Data class into Target
Updated Target

So that the compiler is now a property of the class populated when the
object is created.
Refactored _get_source_files in Target

Renamed to get_source_files and consolidated some of the common
functionality that used to be around it into the method itself so it no
longer requires any arguments.
Refactored the meta module

Refactored the meta module to be based on multiple classes rather than
one massive class essentially wrapping two dictionaries.
Added the writing of the build file meta data

Committing a file which had been forgotten in the last commit.