parser/tests: Fix :*make parsing, parse :*grep* with the same funcs
parser/printer/tests: Add :[l]vimgrep[add] parsing support

Less then 10% commands left now.
parser/tests: Add :marks command support
parser/tests: Add :match command parsing support
parser/tests: Mark that :py3 is also supported
parser/tests: Mark that :sbuffer is also supported
core: Add find_key_option_len function
core: Use findoption_len in do_set
core: Split out get_option_properties_idx() function
core: Allow zero-length options

Code that expected NUL-terminated strings allowed them and this behaviour is
actually used.
parser/printer: Add :set* commands parsing support
printer: Always use long option names when possible
tests: Add :set* command tests