motion read - pull out potential-key logic
nkeys: char -> string

This includes a refactor of key_filter() to check buffer mode.
keys_filter() unget()s fully if it can't find a match
Updated test for change-visual line
Added zz/zt/zb scrolling
~{motion} and gU/gu{motion}