The shortest() template function depended on the behavior of
revlog._partialmatch() for these types of inputs:
- non-hex strings
- ambiguous strings
- too long strings
revlog._partialmatch() seems to return the input unchanged in these
cases, but we shouldn't depend on such a low-level function to match
the behavior we want in the user-facing template function. Instead,
let's handle these cases in the template function and always pass a
binary nodeid to _partialmatch().
One minor bug in this patch.
hg log -T '{shortest(node|short)}\n' -r 'wdir()' no longer works.