Overhauled!

Rejiggied things to use a StateT wrapped EitherT with some sexy error
handling. I'm pretty sure that this is the wrong way to do it, or it's
close but someone else has already invented something more useful than
this. But I came up with this design pretty much on my own and managed
to pull it all together, so for now I'm pretty proud of that.

Everything is back to working as it was before so yay.

Next phase should probably be some tests, before I move on to adding
movement and things like that.

Next step will be to make the middle rect into a tiny square that can be
moved around.

After that I will have the outer rect become a barrier, the square will
not be able to cross the barrier. So collision detection and things like
that will be going on.