Reorder args in expand/contract
Split up alloc() and free() a bit
Change all functions taking a Heap* to take it as arg 1
Add header_for() and assoc_footer() utility functions
Add find_header_index() utility function