Codegen refactor: WIP
Fix test_compile_cache
Fix ufunc building
Remove dead code
Fix test_codegen
Add context managers and release objects when finished
Re-refactor. Two tests failing.
Fix remaining test failures
Fix constant tuple regression in macro expansion
Also improves error messages when non-constant is used with macros
Modify test to exercise the const-tuple marco
Integrate a variant of Siu's patch for OS X & pycc. Also, get rid of EngineBuilder.
Merge branch 'llvmlite2' into codegen
Enhance testing for macro support
Add test for issue #872
Fix #872 (macro expansion in multiple blocks)
Test record get with reversed args
Fix control flow of cleanup for unboxing failure

Branching to a switch table that dominates all the BBs that clean
up in the event of an error unboxing arguments can sometimes fail
the LLVM Verifier checks. This is because the verifier sees that
not all of the cleanup blocks are dominated by all of the blocks
that initialise what they are cleaning up (though in practice
control flow cannot reach uninitialised values, but this cannot be
seen purely considering the CFG).

This commit restructures the cleanup to avoid using a switch
table, and instead to branch directly from arguments which have
failed unboxing into their cleanup block. Each cleanup block then
branches directly to the cleanup block for the preceding argument.
This cleans up arguments in the reverse order of the parameter
list and then exits the function.
Add test of passing two records of similar type
Add test using two distinct record type args
Merge branch 'master' into codegen