Assemble

New assembly algorithm. Very similar to the old one, but cleaned up and more sane. Fixes #39, #34.

Ready to merge. @sellberg, if you're game, check out this branch and test it out to catch any last possible bugs. If everything looks good feel free to hit the merge button!

If you want, feel free to preform a code review on the below as well. Never hurts to have a second pair of eyes/opinions.