cleaned up assembler pass structure

The assembler now cleanly handles all optimization and symbol resolution.
(The organization still isn't completely ideal, but it's good for now.)
added a frontend script for the assembler

It lives in scripts/dcasm.py. It requires docopt for option parsing.