Separate Interpreter from Shell

The Shell now is simply responsible for managing interaction with the
user. The interpreter is responsible for understanding commands.