Convert _built traccking into general build context.
Add a test to make sure files deleted in sub-sub-directories are detected.
Prevent additional RuleError exceptions from created when building recursively.
Merge build context changes.
Move start_build to context object.
Use nanoseconds directly, if possible.

Using the floating point seconds tends to introduce rounding errors.
Reverse order of equals compae in assertInstalls.

It makes more sense for what we expect to come first, and
to compare against that.
Share build context across all build targets in .install()
Use BuildContext, instead of passing verbose/force by kwarg.