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```.
In LLVM trunk, the LoopUnrollPass not only unrolls small loops, but also does partial unrolling of loops.  The latter  thwarts the vectorizer.  If we want partial unrolling of loop, we need to insert another unrolling pass after the vectorizer.