Add attributes to functions pass (#539)

Fixes #538

* Add a new pass early in the flow to add function attributes as
necessary
  * Currently adds readnone and speculatable to
  __translate_sampler_initializer to prevent later optimizations from
  creating phis of samplers
  * add tests
* update spirv headers and tools
diff --git a/lib/Passes.cpp b/lib/Passes.cpp
index 5aa895b..872a75d 100644
--- a/lib/Passes.cpp
+++ b/lib/Passes.cpp
@@ -17,6 +17,7 @@
 namespace llvm {
 
 void initializeClspvPasses(PassRegistry &r) {
+  initializeAddFunctionAttributesPassPass(r);
   initializeAllocateDescriptorsPassPass(r);
   initializeClusterModuleScopeConstantVarsPass(r);
   initializeClusterPodKernelArgumentsPassPass(r);