Generally improve Unicode support

This changes the editor to represent lines as `String`s. It’s possible that this
will have to change in the future if we want to support reading non-UTF-8 files,
but I think this is a good fix for now at least.

It also changes the represntation of keys to be either a character or a
‘special’ key that doesn’t represent a character. This means that all characters
should now be typable.

Fixes #19.
Fixes #17.