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