implement support for keywords as got <commit> arguments
This begins enabling the use of keywords in got wherever commit ids or
references are used, with more work intended to expand support across all
such instances (e.g., branch, checkout, etc.), and add more keywords.
The keywords ":base" and ":head" can be passed to 'got {diff,log,update} -c'
commands as a substitute for the corresponding commit hash id. Keywords and
references can also be modified by appending a ':+' or ':-' and an optional
integer N to specify by first parent traversal the Nth generation descendant
or antecedent, respectively. If N is omitted, a '1' is implicitly appended.
tweaks + ok op and stsp