Added a clean() for removing targets built from source. This also
required a new DependentTargetFromSource class so that such targets
could be identified with isinstance().