add namespaces and casts to allow tests to be buildable again

All ninja functions/classes are namespaced into the ninja namespace. Additionally subprocess execution now requires an additional parameter to specify the current working directory. As well as the BuildStatus class was refactored out to be abstract and a concrete subclass of ConsoleBuildStatus is now in effect replicating the default behavior that was previously contained within BuildStatus
be a bit more specific on path calculations in tests

this likely is a flaw and should be handled by the relative path calculation internally instead of relying on external "correctness" of paths