Fix llvm lit path test getting stuck in a loop

Previously the llvm_lit test would loop forever if the build directory did not live below the source directory.
The emsdk has not arranged my directories like that, instead it looks like `~/emsdk/clang/fastcomp/{build_incoming_64,src}`. This also means I get warnings about being unable to sanity check.

I've put the locating the llvm source in a single method (instead of reimplementing it each time) and then added appropriate checking for the emsdk layout I've been given.