Moved some logic into modules for clarity.

These changes will make the RTL diagrams cleaner.
Fix initial PC values, and pass hailstone test!

In assembler: duplicate initial PC value as previous value for correct thread startup.
Ready to merge: closes #29, closes #28, closes #24, closes #23, closes #22,
closes #21, closes #20, closes #19
Note that issues talking about 4-phase handshakes now should be read as
referring to Empty/Full bits.