Various performance improvements for the vcs backend

1) Fix a bug where watching a directory would also report the directory
as changed if any files inside it were changed. This would causes
excessive polling by the branch segment

2) Fix a bug where the watch for the repo dir in the branch segment
was being continually recreated, again causing excessive polling. This
was particularly noticeable with the patch to fix fugitive file status
updates.

3) Improve the performance of branch coloring for git repos by ignoring
change events for the index.lock file. This file is created/deleted
every time git access the index and would cause the entire working tree
status to be re-queried every time.