fixed fish-shell/fish-shell#944

When the completion list includes the exact typed string with other
candidates, i.e. completion_t.match.type == fuzzy_match_exact,
the other candidates will be removed from the list, as they are not
the "best type". This is inconvenient for the user who wants to
type and complete commands in the other candidates.

The commit is to make the best_type to fuzzy_match_prefix as highest
priority, also, when comparing to best_type, the same or higher
priority completions can both match.
fix the completion problem of `man' under OS X

The problem is `apropos' under OS X behaves differently from Linux.

1. The format: for command `apropos sudo', the output under Linux:
...
sudo (8)             - execute a command as another user
...
and the output under OS X:
...
sudo(8)                  - execute a command as another user
...

one-space difference.

2. For some items sharing a same manpage, e.g. for `apropos printf',
Linux:
...
printf (3)           - formatted output conversion
snprintf (3)         - formatted output conversion
sprintf (3)          - formatted output conversion
vprintf (3)          - formatted output conversion
vsnprintf (3)        - formatted output conversion
vsprintf (3)         - formatted output conversion
...
OS X:
...
printf(3), fprintf(3), sprintf(3), snprintf(3), asprintf(3), dprintf(3), vprintf(3), vfprintf(3), vsprintf(3), vsnprintf(3), vasprintf(3), vdprintf(3) - formatted output conversion
...

OS X puts them in one line.

So, we need special handling here, otherwise, completion with prefix
`man 3 printf' will give the result of "man 3 printf\(3\),"
Merge branch 'osx-man-completion-fix'
Merge branch 'completion-with-all-suffix'