Add support for building a console version. Fixes #18

This is essentially @daniel-j's console support, implemented in a way that lets us build console and gui versions as well. (Threw instructions in the Readme)

It's a damn big change. I had to change a few names (because things like the main class being named `Widget` were driving me nuts), hopefully the changes make sense. If you want me to change or modify anything, just let me know, but I do know this compiles and works fine!