Adding support for ycm to the cpp filetype

Conflicts:
	syntax_checkers/cpp.vim
c, objc and objcpp support
update checkers to use the new syntastic#makeprg#build()

Make all the easy updates. There are still quite a few to do, but in
doing these ones I can see that syntastic#makeprg#build() needs to
accept a few more options. Namely:

* "postargs" that appear after the filename
* "tail" that appears after everything - used for things like
  redirecting output and piping to grep/sed/etc
* the filename itself - only the java checkers needed this since they
  specify the directory of the file to check as well

There are still a few other things to do as well:

* remove the options from the checkers that are now provided by
  syntastic#makeprg#build implicitly - i.e. the checker exe and args.
* also, we need to doc the above implicit checker options
update makeprg builder and update some checkers to use it

update makeprg builder:
* it now accepts `fname`, `tail`, and `post_args` params.
* add some doc above syntastic#makeprg#build
* update a bunch of checkers to use the new params

Still have quite a few checkers that arent using makeprg#build.
Including all c* and a few other c-like checkers. And PHP.

Not to worried about c* as these checkers are complicated and probably
justify having their own logic to build makeprgs.
make php checker use syntastic#makeprg#build
Add support for *.twig files
Force case-sensitive matching in syntastic#c#ReadConfig

This makes it not match lines like:
-include some_header.h
Merge pull request #456 from RedBeard0531/master

Force case-sensitive matching in syntastic#c#ReadConfig
Refactor ycm usage into separate files
javac checker added fix for glob function
Merge pull request #458 from troydm/master

javac checker glob related bug fixed
Merge pull request #454 from asm89/twig

Add support for *.twig files
refactor how we represent and store checkers using python as a demo

Add 2 classes: SyntasticChecker and SyntasticRegistry.

SyntasticChecker represents a checker. It holds funcrefs to the checker
func, the highlight regex func and a new `isAvailable()` func (that
essentially just checks if the checker exe is installed)

SyntasticRegistry is responsible for:
* loading checkers
* storing checkers
* fetching the checkers to use according to availability and the users
  settings

Motivation/benefits:
* in the current system only one checker can be loaded per filetype
* syntax checkers cant be "chained" together
* the system is hard to add features to since fundamental concepts like
  syntax checkers and location lists arent represented explicitly

Things left to do:
* add a call to g:SyntasticRegistry.CreateAndRegisterChecker() to all
  checkers
* add an `isAvailable` function to all checkers
* move all checkers into `syntax_checkers/filetype/checkername.vim` -
  g:SyntasticRegistry assumes this layout, and its a good idea anyway
  for consistency and it makes it easier for users to add their own
  checkers

Things to do after all of the above:
* add a LocationList class and move all the filtering functions onto it
* possibly add an Error class that wraps up each item in a loc list

Random notes:
* with the new system you can select the checkers to use with e.g.
    `let g:syntastic_python_checkers=['flake8', 'pylint']`
  This will try flake8 first, and if no errors are detected it will move
  onto pylint.
php: fix phpmd to use post_args

PHP mess detector expects the filename as the first argument, followed
by the output format and the rules. To fix this, use the 'post_args' to
provide the arguments.
Also change the subchecker to 'phpmd' instead of 'phpcs'.
Merge pull request #460 from teranex/master

Fix php mess detector in php
Merge remote-tracking branch 'valoric/ycm_support'
refactor all the syntax checkers to use the new API and dir layout
fix a couple of bugs with ruby checkers
update how checkers are chosen

* add a system for setting default checkers
* return the first check we find, unless told to chain checkers together
  by default settings, or user settings
bugfix for eruby checker