LLVM-3.3 support

Mostly contributed by Patrick Hulin.  I made a few
extra changes, too.