Move popping of completed blocks

Move the point in code where blocks whose end has been reached are
popped and where exitBlock() is called on them to before the builder's
current step is reset to null, because exitBlock() may call methods on
AssemblyBuilder that require the current step to be nonnull. Move it
before incrementing the program counter because exitBlock() may generate
output.
Change implementation of Assembly.endPass()

Change the implementation of Assembly.endPass() to unwind the block
stack, calling Block.exitBlock() on each block. This makes the endPass
field no longer necessary.