Run auto-updating on BufReadPost event

If 'autoread' is set and a buffer gets updated, tagbar need to be
triggerd to update itself too.
When switching to a buffer that is unsupported, clear current.
Improve out-of-sync error reporting
Do not interfere window switching history

Many plugins rely on 'wincmd p' to work properly, we need to preserve
at least one-level backwards window switching history.
Small cleanup of last patch
Reinstate noautocmd when going to pprev window
Quit if no more normal window exists

There might be other plugin windows but no normal file window open, we
need to make sure tagbar window is closed at this situation.
Only colse the tagbar window itself

If there are other plugin windows open, close tagbar window and handle
over the control to the other window.

If the last file in the Vim's file arguments list has not been edited
yet, normal Vim's behavior would be quit on ':q!' or twice ':q'. As our
plugin window is the last window now, previously quiting on the file
window will not trigger the "more files" check, but our window does.
We'd better to behave the same. Currently, twice ':q' quiting would work,
but ':q!' not. There is no easy way to determine whether the command
being executed with a "!" or not, so this is a flaw now and we need
to come up a better solution someday, but it is a progress than before.
Only reset '0 mark when it is the last window

We only need to reset '0 mark when our tagbar window is the last one,
otherwise, just quit the window and let the other window handle the
error that might happen on quiting Vim.
Small patch cleanup
Add abort() to NextNormalWindow function
Don't update when in previewwindow, closes #112
Merge pull request #118 from techlivezheng/feature/autoupdate-on-bufreadpost

Run auto-updating on BufReadPost event
Fix header indentation
Prevent update error when current file is empty
Merge pull request #123 from jszakmeister/fix-currenttag-on-unsupported-file

When switching to a buffer that is unsupported, clear current.
Update credits
Better handling of switching to unsupported buffer
Run ctags even if previous run produced erros, closes #125

If a ctags-compatible program returns an error status code on a parsing
failure then it would never be run again on the same file, even if later
invocations would have returned normally (for example after fixing an
error in the current file). Therefore we need to execute the program on
updates as usual, but do not repeat error messages if the previous run
already did.
Save and restore window position when expanding, closes #129