Implement most basic functions of the shell.

Still missing the save and load functionality. Will work on it later.
Move exceptions to their own module