Added initial shell implementation.  

Probably needs better error handling.  Also, implementation isn't very elegant.
@bsoetaer 
This contract code appears to pass on my machine. However if I do the following I seem to get into an infinite loop.
I made this in a shell_dirver file because I was unsure how to run the shell code so that I would be in the initialize loop. Seems to get stuck no matter what command I use and also if I just use read instead of readlines. I will investigate further.

```ruby
require_relative "shell"

shell_input_read, shell_input_write = IO.pipe()
shell_output_read, shell_output_write = IO.pipe()
shell = Shell421.new(shell_input_read, shell_output_write)
shell_input_write.write("ls")
shell_output_read.readlines.join("")
```