Fix E855 on :lclose

Since 7.3.449 trying to :lclose inside BufWinLeave result in E855:

    $ vi -u /dev/null --noplugin -N
    :autocmd BufWinLeave * if empty(&bt) | lclose | endif
    :lexpr(':1:msg') | lopen | wincmd p | lclose
    E855: Autocommands caused command to abort

    $ vi -u /dev/null --noplugin -N
    :autocmd BufWinLeave * if empty(&bt) | lclose | endif
    :lexpr(':1:msg') | lopen | wincmd p | q
    E855: Autocommands caused command to abort

Another issue with this autocmd is &bt in BufWinLeave may be different from
the buffer being unloaded (this is documented behaviour for BufWinLeave).
Replacing &bt with getbufvar(0+expand('<abuf>'), '&bt') solve this, but
doesn't fix issue with E855 completely (first of above examples with
:lclose is fixed, but second with :q is not fixed).

So, to work around E855 I've changed way to close location-list:
instead of closing it on BufWinLeave, it's closed on BufEnter into
location-list window if it's only buffer in current window.
Add a check for the error messages variable so that users can specify their own error format.
Updated the dart syntax checker.

It now uses the correct path for the dart_analyzer, it uses the
machine readable format to provide more information.

The highlighter now highlights the exact span that the analyzer complains
about. Further, warnings are different from errors now.
Checkers cleanup.

Elliminates duplicate code.
Brings gcc cpp, objc, and ada checkers in synch with c.
Minor bug fixes.
Bug fix.
Another bug fix.
Added new sh checker: checkbashisms.
Fixed error on SyntasticToggleMode.
Removed unsafe tcsh checker.
Typo in cpp/gcc checker.
Use and adapt to more recent checkbashisms.pl. Some refactoring.
Try to cope with older versions of jshint.
sh/checkbashisms: remove unneeded l: variable prefixes
Set subchecker.
Add subchecker to syntastic#makeprg#build() calls.
Fixes the sparse checker.
Also allows %v to be used in errorformat.
Updates errorformat in coffee.
Bug fix.
bugfix for sourcing the syntastic class files

Fixes #543.

Use `runtime!` to source all runtime files - not just the first one
found. I actually dont know how syntastic was working at all without
this...
extract the vim work around code out to be more explicit

Add an explaining variable and a comment for the vcol workaround. See
issue #588