Fix typo
Compare bytes for escape sequences

Don't convert to strings if we don't have to.
Initial support for UTF8

Still has issues with double width runes which need to be dealt with.
Add custom error for user termintation

Custom error UserTerminatedError was added so that the API consumer can
see when the user termianted the prompted (e.g. with CTRL-C)