First cut on restricting targets.

Targets now require the @target function decorator to be a valid target.
Updated the clean runner

It now works with the refactored File.
Simplifying codebase

Refactoring the codebase so it has less moving parts, having targets be
the focus of everything.
Converted spaces to tabs
Implemented build functionality in Target
Refactored clean to be a method on a target.
Added dependency generation to Target