Clean up code

Add base classes for different types of windows. All SubWindows of a FullWindow will update at the same time as the FullWindow. Makes for shorter, cleaner code, and I don't have to worry about refreshing dozens of objects.

Add placeholders for input functions in the FullWindow and SubWindow classes. Create a placeholder pointer to the focus of the window.

In addition, fix the bug where the cursor jumps around the screen as it draws. The cursor currently stays in place, but can be moved or removed if desired.

This builds on the previous two pull requests. You may review all three individually, or just merge this one in to add all of the changes from all of the pull requests.