Migrate font-lock and indentation to `cc-mode`

Ported from Daniel Hackney's fork https://github.com/haxney/php-mode

It looks like most of the font-lock support can be done through creative use of
`c-lang-defconst`. I am using the following files for moral guidance:

- [`yang-mode`](http://www.emacswiki.org/emacs/yang-mode.el)
- [`protobuf-mode`](http://code.google.com/p/protobuf/source/browse/trunk/editors/protobuf-mode.el)
- [`vala-mode`](https://live.gnome.org/Vala/Emacs?action=AttachFile&do=get&target=vala-mode.el)
- [`derived-mode-ex`](http://cc-mode.sourceforge.net/derived-mode-ex.el)
- [`actionscript-mode-connors`](http://www.emacswiki.org/emacs/actionscript-mode-connors.el)
- [`cuda-mode`](http://www.emacswiki.org/emacs/CudaMode)
- [`cc-php-js-cs`](http://www.mail-archive.com/gnu-emacs-sources@gnu.org/msg01804/cc-php-js-cs.el)
- [`boogie-mode`](http://www.pm.inf.ethz.ch/people/josephr/boogie-mode)
Resolve test failures and other improvements

* fix indentation for cascaded calls
* register -> as identifier ops (this solves the issue with current
  php-mode where topmost-intro is misused)
* fix indentation of inlambda (issue 29)
* support use/as statements
* restore highlighting of variables (using plain regex to accomplish
  this, this is because c-mode does no highlighting of variables, only
  of their definition - and PHP has no decl keywords for variables)
Remove list of PHP constants, use regex instead

The rationale here is that maintaining a complete list of constants is
impossible, considering the many extensions out there. We're now simply
marking all capped symbols as constants.

Also matching the class name of a static method call as constant,
c++-mode does the same.

Some remaining todo's:
 * make the namespace separator behave / look like :: in c++ mode
 * fix issue-53 or remove whitespace stripping from php-mode (recommend
 ws-trim-mode)
Merge remote-tracking branch 'Jory/work/ccmode' into cc-mode-conversion

* Jory/work/ccmode:
  Remove list of PHP constants, use regex instead
  Resolve test failures and other improvements
  Migrate font-lock and indentation to `cc-mode`
README: Add section of in-progress features
Restore support of user-customizable constants

php-extra-constants and web-mode-extra-php-constants can be used to
define additional symbols as constant, but this now only makes sense for
lower or camel-cased constants

Ideally we'd implement this using the cc-lang constructs but
c-constant-kwds does not allow user customization (c-lang-defconst). For
identifier keywords cc-mode has the *-extra-types variables but this
does not work for constant keywords.
Support T_NS_SEPARATOR in identifiers

All identifiers are recognized as words in cc-mode/php-mode, so special
care is taken to have our custom highlighting pattern for variable names
not include the separator.
Support statically called methods with namespace
Fix unexpected pass of test for issue-9

Issue #9 is not fixed (and expected to fail) but because of the
different highlighting of unmatched string delimiters in the cc-mode
branch the test passed. This commit makes the assertion more specific so
it fails again.
Fix indentation of cascaded calls in arglists
Fix indentation of arrays and method calls

Related to issue-115, added test case
Fix fontification of constants in strings
Restore broken psr2 and symfony2 styles

Those two were removed in the first cc-mode conversion commit. Below a
short summary of the styles and how I intend them to behave in this
branch.

Drupal: Sets indentation to two spaces, some indentation tweaks. Does
automatic removal of trailing whitespace.

Wordpress: Indentation tweaks and tab-width of four spaces.

PSR2, Symfony2 and PEAR: They are basically the same. The Symfony2 style
allows the unofficial 'hanging semicolon' behaviour. PEAR is the
default. I think it would be better for php-mode to just forget about
PEAR, drop Symfony2 as a style (the framework uses PSR-2) and use PSR-2
as default. The hanging semicolon could be a configurable option,
independent of the style in effect.

This commit fixes the failing test on whitespace removal (issue 53).
Merge remote-tracking branch 'origin/master' into work/ccmode
Exclude new ert tests depending on fl-add-keywords
Merge remote-tracking branch 'upstream/master' into work/ccmode
Fix broken indentation inside class and lambda

Also improves indentation of case labels and goto labels
Restore preprocessor face for php open/close tags
Don't highlight multiple identifiers if not allowed

Keywords like insteadof, instanceof and "as" are followed by exactly one
identifier, so only that identifier is now highlighted. An exception to
that rule is "extends"; java-mode too allows a list of classifiers there
even though it doesn't support multiple inheritance.
Highlight class name resolution constant

PHP 5.6 introduces the ::class constant (e.g. stdClass::class) so it
makes sense to highlight it with a constant face