Use gc_alloc_vector when allocating vectors. Fixed a bug in the
disassembler.
Assert that all vectors/procedures are allocated through gc_alloc_vector.
Write debug channel to stdout, but don't add it to the "expected output"
storage buffer.
Let's rewrite everything! This commit redoes how arguments are passed
to C functions. Before, the code would expect that arguments came in a
singly-linked list joined together with pairs. This change makes
functions take an array of values. The main reason for this is so that
it simplfies when we call into our C helper functions from the VM
which will happen more often now that we're moving to a model where
there is little-to-no interpretation of the AST.
Removed an unnecessary statement from compile_form_to_bytecode. Fixed the
printing of objects so that cons cells aren't so ugly. Fixed an error with
eval'ing pairs.
Fleshed out compile_define. Yay! Updated some documentation.
Fixed a bug in the GC allocator where we weren't accounting for object
padding when allocating vector space.
Reworked a bunch of code to work better with calling C functions from the
VM. The code now embeds the number of arguments for the particular call
into the opcode so that they can be verified in the VM loop. This is
mostly just for my benefit currently.

Still WIP though, this doesn't work yet.
Fixed a bunch of issues with tail calls when the new function had a
greater arity than the current one.