Add loadResources() method, which calls loadResource for each item in the
given range.
Write trace information to process-specific directories, store module bitcode
in instrumented executables, and write module bitcode into produced traces.

These changes allow us to discard intermediate files from the compilation
process (the uninstrumented Module), and make produced traces easier to work
with.

OutputStreamAllocator and InputBufferAllocator have been changed to use LLVM's
PathV2 interface.

OutputStreamAllocator is now constructed through the static method
createOutputStreamAllocator(), which returns either a newly constructed
OutputStreamAllocator or an Error describing the reason that no allocator
could be created.

Added OutputStreamAllocator::writeModule(), which writes a Module's raw
bitcode into the appropriate file in the trace directory.

InputBufferAllocator is now constructed through the static method createFor(),
which returns either a newly constructed InputBufferAllocator or an Error
describing the reason that no error could be created.

Added InputBufferAllocator::getModule(), which attempts to load the original
uninstrumented llvm::Module from the trace information. This method returns
either the loaded Module, or an Error describing the reason that it could not
be loaded.

Added two new globals to the information inserted by the RecordExternal pass:
SeeCInfoModuleBitcode is a char array containing the original Module's
bitcode, and SeeCInfoModuleBitcodeLength holds the length of that array.