Re-implement clspv-opt as a standalone driver (#346)

* Fix #307 and #322.

This re-implements clspv-opt as a standalone driver.  The initial
implementation used the plugin facility for LLVM opt, but this is
difficult to implement in Windows (#307).

The driver only supports LLVM scalar transformations and all of clspv
transformations.  To do this, passes must be declared using LLVM's
INITIALIZE_PASS macro.  Additionally, the function
initializeClspvPasses() must include a call to the initialize*()
function generated by INITIALIZE_PASS.

This change also adds tests for all the existing passes in clspv.  It
does not check for specific transformations.  It checks that the flags
are accepted by clspv-opt.

Finally, this change reduces the build time for LLVM by building no
target backends by default.
diff --git a/lib/SPIRVProducerPass.cpp b/lib/SPIRVProducerPass.cpp
index 5d31d6b..1357f1c 100644
--- a/lib/SPIRVProducerPass.cpp
+++ b/lib/SPIRVProducerPass.cpp
@@ -46,7 +46,6 @@
 #include "clspv/AddressSpace.h"
 #include "clspv/DescriptorMap.h"
 #include "clspv/Option.h"
-#include "clspv/Passes.h"
 #include "clspv/spirv_c_strings.hpp"
 #include "clspv/spirv_glsl.hpp"
 
@@ -54,6 +53,7 @@
 #include "ConstantEmitter.h"
 #include "Constants.h"
 #include "DescriptorCounter.h"
+#include "Passes.h"
 
 #if defined(_MSC_VER)
 #pragma warning(pop)