Document macro-expansion stage
Add header to IR dumps
Add docstrings to macro.py
Only dump expanded IR if any macros were expanded
Merge pull request #856 from gmarkall/document_macros

Document macro expansion
Fix use of address_of_symbol() / add_symbol().  This fixes crashes under Windows XP, amongst others.
Merge pull request #871 from pitrou/fix_add_symbol

Fix use of address_of_symbol() / add_symbol().  This fixes crashes under...
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.
Test record get with reversed args