Fix for compatibility with LLVM trunk changes that use unique_ptr<Module>

LLVM trunk recently started using ```std::unique_ptr<Module>``` in some interfaces that previous took ```Module*```.  The change also avoid gratuitous copying of an ```EngineBuilder``` object (and all its string members).  The latter point is obscured by C++ syntax.  In the original code, a temporary object of type ```EngineBuilder``` is created, and then a chain of methods are applied to it, each returning a reference to the temporary.  Then ```eb``` was being copy-constructed from the last reference in the chain.