match: introduce explicitdir and traversedir

match.dir is currently called in two different places:
(1) noting when a directory specified explicitly is visited.
(2) noting when a directory is visited during a recursive walk.

purge cares about both, but commit only cares about the first.

Upcoming patches will split the two cases into two different callbacks. Why
bother? Consider a hypothetical extension that can provide more efficient walk
results, via e.g. watching the filesystem. That extension will need to
fall back to a full recursive walk if a callback is set for (2), but not if a
callback is only set for (1).
dirstate.walk: call match.explicitdir or traversedir as appropriate
localrepo.commit: hook into match.explicitdir
purge: hook into match.explicitdir and traversedir
inotify: call match.explicitdir

inotify only returns explicit directories matched.
match: drop dir callback

dir has been subsumed by explicitdir and traversedir.
convert: fix bug of wrong CVS path parsing without port number (issue3678)

The cvsps.py:getrepopath suffers from a string parsing bug (it returns
"user@server/path/to/repository" if the CVSROOT is given like this:
":pserver:user@server/path/to/repository" ), which gives returnes the wrong
value becouse cvsps.py fails to strip the prefix from filenames.
With this patch for the same input we get the correct repo path that is:
"/path/to/repository"

--HG--
branch : stable
extra : rebase_source : 79ab87fc9ffab57584997372013533cc612f8636
dirstate.walk: cache match.explicitdir and traversedir locally
match: make explicitdir and traversedir None by default

With this, extensions can easily tell when traversedir and/or explicitdir don't
need to be called.
match: add comments to explain explicitdir and traversedir
merge with stable