Adr/trunkvec

I'll reopen the pull request after I've tested it with LLVM 3.3 and 3.4.  It fixes the problem described in #7504 and also cleans up muddled usage of ```llvm::EngineBuilder```.
As far as I can tell, ```.setMCPU``` and ```.setMAttrs``` just stash their argument into internal fields of ```EngineBuilder```, which are then used when ```EngineBuilder::selectTarget``` is called without those arguments.  It seems more direct to pass the arguments directly to ```EngineBuilder::selectTarget```.