Adding support for ycm to the cpp filetype

Conflicts:
	syntax_checkers/cpp.vim
c, objc and objcpp support
Add support for *.twig files
Refactor ycm usage into separate files
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
Merge branch 'refactor_checker_structure' into merge-with-refactor

Conflicts:
	syntax_checkers/cpp/gpp.vim
	syntax_checkers/objc/gcc.vim
remove some, now unused, syntax checker files
add a couple more default checker settings
fix a bug with the checkpatch checker

(introduced in the epic refactor)
fix a couple of bugs in the c/gcc checker

(introduced in the epic refactor)
split up php checker into php, phpmd and phpcs