Changed the file structure around to make it more clear where procedural vs declarative tools live.
small cleanup to unit test code.
Split the target.dart file into two parts, to make the annotation a distinct value from the rest of the classes.  This also makes the restrictions on dart annotations easier to deal with.