Merge pull request #25 from JacobLeach/tab_completion

Tab completion
Added command history.

This a a complete fuckery. Edited keyboard driver to return ANSI control
codes for arrow keys. Edited console to call handler functions for those
command keys. Added handler functions to do the command history with
those command keys.

A massive refactoring is required for console and shell because this is
awful but I got really god damn annoyed with this fucking shit so I
couldn't be bothered at this point in time.

See #5.
Merge pull request #28 from JacobLeach/command_history

Added command history.
Shit was working but now its not. Idk why.
Works now. Can't be bothered to write a good commit.
Made Kernal show Greenscreen when kernal error.
Merge pull request #29 from JacobLeach/bluescreen

Bluescreen
MASSIVE change. Removed console added terminal

- Removed canvastext. Using plain canvas.
- Used a monospace font so we can have a grid.
- Implemented support for ANSI control codes.
- Added a terminal interupt.
- Made scrolling work.
- Made line wrapping work.
- Backspace works again.
- Shell is completely broke since I changed the console API
- Fuck yea.

Fixes #8. Fixes #4. Reverts all of the shell stuff.
Implement basic putString for stdio.
Merge pull request #30 from JacobLeach/stdio

Implement basic putString for stdio.
Enabled terminal interupts
Working to make Shell work.

- Added global for ESC.
- Reenabled Terminal interupt
- Added ANSI control code to move down line
  - Needs to be implemented
Added support for ANSI control codes E and F

Move down a line and up a line.
Merge pull request #31 from JacobLeach/terminal

Added support for ANSI control codes E and F
Merge branch 'dev' into new_shell
Made commands work again.
Added function to get curent cursor position
Merge pull request #32 from JacobLeach/terminal

Added function to get curent cursor position
Merge branch 'dev' into new_shell
Fixed prompt so it displays on correct line.