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
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
Fix test
Deduplicate macro shape checking code
Merge pull request #867 from sklam/fix_tuple_constant

Fix tuple constant in macro
Merge pull request #873 from gmarkall/fix_macro_expansion

Fix macro expansion (issue #872)
Comment on two versions of fn in test_record_dtype
Merge pull request #874 from gmarkall/fix_record_dtors

Restructure the generation of Record destructors to fix issue #870