locate: better fallback mechanism

Misc.find_in_path_uncap now does the fallbacking itself.
Previously we tried to find an "i" file only when Misc.find_in_path_uncap raised
not found.
This means that in some cases Misc.find_in_path_uncap returned a result from a
path "down" the path list while an "i" file might have been present in the first
few paths.
(As I write this, I don't expect anyone to understand this badly phrased
explanation. Sorry.)
locate: really fix weird behavior when starting point is on an alias
locate: don't return file path when the result is in the current buffer