Reordered the label placement

After looking at the book's IR code, it had the activation records after
the procedure/function declarations. This cleaned up the code so it
doesn't have to branch over other declarations.
The start label is now placed after procedure/function declarations and
right before the activation record generation.

The program block generates an unconditional branch to its label which
will be the start of the activation record for main.

Block types are being left in for the moment as they might be needed in
the activation record to differentiate between program and function
activations.