Initialise 'exists' in hash_get()
Initial complete skeleton
Show completions at a y-offset from the cursor
Use line length and per-line in list_iter_region() - fixes complete_gather()

complete_gather() can now correctly iterate over the string, and only
once per line.
Correctly limit 'end'

The line may not be nul-terminated.
ui.c pads the completion menu to the longest
Pull keymacros out to a common header
complete_filter() handles backspace
Insert when typing in Ctrl-N/P