Emit instructions in memory in only one pass

We would emit a program like this:
  * Extract labels from the instruction stream as we receive it.
  * Go through all the instructions and emit them to memory.
  * Go through all of them again, patching the ones that use labels with
    the correct address.

Now we can do this almost all at once:
  * Go through all of the instuctions:
      - Bind: extract the label to a list of known label.
      - B/Bl/Adr: check if the address used is a label:
        * No: the address is correct, emit the instruction.
        * Yes: we try to find the label in the list of known labels:
          - Not found: copy the instruction to a list of instructions to patch
            later.
          - Found: fix the instruction with the correct address and emit it.
      - All the others: emit the instruction.
  * Go through the list of instructions to patch:
      - B/Bl/Adr: fix the instruction with the correct address and emit it at
        the right place.
Fix error messages.

Use unreachable when it would be an internal error.
Remove assert!(false)