Support for synchronous + asynchronous tags file updates (huge refactoring)

See also pull request #49 for my previous and failed attempt:
  https://github.com/xolox/vim-easytags/pull/49
FIX: Ensure full absolute tagsfile filespec in async mode.

On Windows, tagfiles() can return a filespec that is absolute to the current drive (i.e. \foo\bar\tags). In async mode, the forked Vim process may have another current drive, so it should be ensured that the filespec is a full one, including the drive letter: D:\foo\bar\tags.
FIX: Avoid error about empty Dictionary key.

I had a degenerate tags file that had *two* tabs separating the tag from the filespec column; parsing that yields an empty filespec, which caused E713. There used to be an explicit check for that; with your recent refactorings, one instance of that check was lost. Here it is again!
Silence asynchronous tags file updates by default

This change is related to pull request #82 however that pull request
wasn't merged here (and won't be merged at all) because it was based on
the old/dead `async-cleanup' feature branch (see pull request #49 on
GitHub) instead of the new `async-take-two' feature branch (see pull
request #84 on GitHub). This change set implements the equivalent on the
new feature branch.

In addition to Ingo's comments in pull request #82, the asynchronous
message frequently disturbs me while typing a Vim command, which is kind
of annoying. If everything goes well and we can get the async mode to be
stable enough to become the default mode then the status messages will
only be interesting when debugging a problem anyway.
Disable automatic tags file updates during :vimgrep

This change is related to pull request #83 however that pull request
wasn't merged here (and won't be merged at all) because it was based on
the old/dead `async-cleanup' feature branch (see pull request #49 on
GitHub) instead of the new `async-take-two' feature branch (see pull
request #84 on GitHub). This change set implements the equivalent on the
new feature branch (without introducing another option).
Disable automatic tags file updates during session loading
Don't use :redraw in :HighlightTags during session loading
Merge pull request #86: Ensure full absolute tagsfile filespec in async mode
Merge pull request #87: Avoid error about empty Dictionary key
Bug fix for invalid tags filtering (cache.exists() was broken, now fixed)
Actually enable the automatic commands introduced in 6c7a66349ec :-)
Bug fix for Vim based syntax highlighting of tags
Refactor atomic file updates into a feature of vim-misc
Automatically create missing directories when writing tags files
Bug fix for typo introduced in 6c7a66349ec
Merge pull request #84: Asynchronous tags file updates! \o/

This is part 1/2 of speeding up the vim-easytags plug-in. Refer to the
pull request for details: https://github.com/xolox/vim-easytags/pull/84
In part 2/2 I want to speed up the dynamic syntax highlighting.
Potentially related open issues on GitHub (probably missed a few):

 - https://github.com/xolox/vim-easytags/issues/32
 - https://github.com/xolox/vim-easytags/issues/41
 - https://github.com/xolox/vim-easytags/issues/68