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 representation 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 typeable.

Fixes #19.
Fixes #17.