New: UndoManager tracks undos

Included file in separate JS library.

Resolves #12
New: undos and redos work.

Gonna be doing some user testing to figure out exactly how to implement it though.
Fixed: undos undo to first alphanumeric character of undone change

Pretty sure this is the most sensible way.