Upgrade LLVM and Clang to current ToT (#305)

* Fix uses of getOrInsertFunction
  * return type changed
* Fix uses of raw_fd_ostream
  * enums changed
* Fix memcpy replacement
  * alignments are now src and dest params
* Add default verification prefix
  * needs to know what string to use with -verify
* Test updates
  * struct inserts needs new targeted tests
  * pointer selection needs new targeted tests
* Allow old toolchains
* rewrite function attribute copy
diff --git a/lib/HideConstantLoadsPass.cpp b/lib/HideConstantLoadsPass.cpp
index d3b5cda..dccbff7 100644
--- a/lib/HideConstantLoadsPass.cpp
+++ b/lib/HideConstantLoadsPass.cpp
@@ -105,7 +105,7 @@
       // Make the function.
       FunctionType* fnTy = FunctionType::get(loadedTy, {loadedTy}, false);
       auto fn_constant = M.getOrInsertFunction(fn_name, fnTy);
-      fn = cast<Function>(fn_constant);
+      fn = cast<Function>(fn_constant.getCallee());
       fn->addFnAttr(Attribute::ReadOnly);
     }