Get rid of some explicit uses of target_base.

This is to try and get some sanity around where source paths
are assumed to be relative to the buildroot, vs relative to
the source_root.
Refactor test discovery.

Now the method and variable names are more indicative of
what's actually going on, instead of a magic "normalize" method.