Implement better keyboard typeahead navigation
Previously each keystroke would only attempt to match the first character in an icon's label. A more useful form of typeahead is to maintain a buffer of typed characters, and gradually try to match longer prefixes of the icon's label as more characters are typed.
After 1500ms of inactivity (or a key press that could not be a valid character), typeahead is canceled and the buffer is cleared.
Closes #151 (closed).