WIP on imrpoving error handling
A bunch of pointless rearranging, and a few new formatting functions
Make error messages way better. Fix some bugs.
Fix more bugs.
Work on making factorial example work; it's still sort of broken.