PartialCommand can be initialized with the command
Add PartialCommand#killLeft() and PartialCommand#KillRight()

Not sure if this language has conventions around instance methods,
in Ruby the hash between the class and the method implies it is an instance
method rather than a static method.

This is based on ReadLine/Emac's kill commands (C-k and C-u)
http://tiswww.case.edu/php/chet/readline/readline.html#SEC6
Add PartialCommand#yank()

Not an exact match for readline/emacs functionality,
as they have a kill ring you can cycle through to decide
which kill you want to  yank. But covers the 90% use case
Add functionality to ConsoleReader + small refactorings

Added Functionality
-------------------

* ctrlp - scroll back through history (same as up arrow)
* ctrln - scroll forward through history (same as down arrow)
* ctrlk - kill to end of line
* ctrlu - kill to beginning of line
* ctrly - yank previously killed text

Missing Functionality:
----------------------

I have no access to a Windows machine,
so I can't test what the character codes should be.
I set them all to -1 to make this really obvious,
so that anyone who cares will see it and check them.

There is no kill ring or word killing.

Refactorings:
-------------

Rather than have each command that potentially needs to clear the screen
have to explicitly do it, we just do it at the end of every
ConsoleReader#readLine, prior to printing the current command.

This means the `clear` method goes away. We record the command to clear
before processing the current command (because clearing is done via "\r"
followed by lots of spaces, so we need to know the old command in order
to know how many spaces to write). And then we clear the previous
command just before printing the current command.

This allows the two expression statements like
`{ clear(cmd); cmd.set(history.prev()); }`
to be simplified to just `cmd.set(history.prev());` Frankly, I'd do the
same with the braces on all the control structures, too, but it's not my
project and some people prefer curly braces like that.

Also, there was some mixed whitespace between spaces and tabs,
this isn't apparent when your tabstop matches the spaces,
but I keep mine at 2, so some lines were very out of sync.

And there was some trailing whitespace on some lines.
I don't really give a shit about things like that,
but the community seems to be in consensus that trailing whitespace is wrong,
so my editor just deletes it automatically, and getting it back is difficult.