Organize imports
Make the 'handleChar' function able to do IO

Also, make the AppState bindings able to do IO. This lets us write modifying
functions which access the outside (like load/save files).
Add the ability to load, edit, and save files

This involved a couple of changes. First, the only way to load a file is by
putting it as the first command line argument when running. Since there isn't
any place to enter a filename within the program itself, it can't be specified
once the program is running. Also, I added support for allowing bindings that do
IO, involving two new functions for adding bindings, as well as splitting the
default bindings into IO and pure bindings.