Use extra constants and keywords from Web Mode if available

Web Mode allows users to define a custom list of additional PHP
constants and keywords.  This patch incorporates those lists into
their PHP Mode counterparts.  However, in PHP Mode we create the lists
as constants at compile-time.  That means users who reconfigure those
lists in Web Mode will not see the changes automatically propagate to
PHP Mode.
GitHub-Issue: 100 (Unit Test)
Fix two errors with the regex for matching namespace imports

1. We need to escape all backslashes.  Specifically we need to write
‘\\s-’ instead of ‘\s-’ for matching whitespace.

2. We want to match zero or more whitespace characters, not just one
optional character.

GitHub-Issue: 100
GitHub-Issue: 115 (Unit Test)

We expect this test to fail because of a current limitation in the
test suite.  In order to test for indentation we use ‘magic comments’
and describe the correct, expected offset for indentation that we want
to see when running the tests.  The test for issue 115 has this:

    // ###php-mode-test### ((indent c-lineup-cascaded-calls))

The test suite code will fail on this magic comment because it tries
to treat `c-lineup-cascaded-calls' like a variable that we can compare
to the indentation.  The problem is that `c-lineup-cascaded-calls' is
a function, and we need to apply it to the correct ‘language element’
in order to get an indentation we can compare against.

Until the test suite supports this behavior we will expect the test
for issue 115 to always fail.
Use the PEAR indentation style by default for unit tests

We can tell the `with-php-mode-test' macro to use an explicit
indentation style if necessary.  However, we rarely do so, meaning
that the temporary buffers we create for testing indentation take on
the user’s preferred default indentation style, e.g. `gnu' or `linux'.
We only ensure correct indentation for the styles that PHP Mode
explicitly provides to users.  So this patch changes the behavior of
the macro to use the PEAR style of indentation by default, that way we
can be sure we are testing indentation with a style we support.

This patch also modifies the macro so that it enables PHP Mode before
selecting any style, as the original order of trying to select the
style first can cause errors.

This change relates to the issue below, as its unit test would no
longer pass since I was not using one of PHP Mode’s specific styles.

GitHub-Issue: 29
Align chained method calls inside of arrays

This patch modifies the four PHP Mode specific indentation styles so
that method calls in arrays align like so:

    $x = ["x" => $this->foo()
                      ->bar()
                      ->baz()];

Admittedly this may introduce unexpected indentation in some
circumstances, particularly with the Drupal style, as it was the only
style that defined `arglist-cont-nonempty'.  We do not have any tests
which use that cc-mode syntactic symbol in other contexts.  So this
patch implements the indentation above but because our test suite does
not thoroughly examine `arglist-cont-nonempty' this patch should be
first on our list of ‘things to check’ and possibly revert if we
receive any bug reports related to `arglist-cont-nonempty'.

GitHub-Issue: 115
Update php-mode-modified
Merge branch 'ejmr/align-method-calls-in-arrays'

* ejmr/align-method-calls-in-arrays:
  Update php-mode-modified
  Align chained method calls inside of arrays
  Use the PEAR indentation style by default for unit tests
  GitHub-Issue: 115 (Unit Test)
Add (require 'speedbar) as functions are used.

Fixes byte-compiler warning of the form:

Warning: the following functions are not known to be
    defined: speedbar-add-supported-extension

Speedbar has been a part of GNU Emacs since version 23.2, so it should
be safe to require.

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Remove eval-when-compile.

Fixes byte-compiler error of the form:

Error: Symbol's value as variable is void: php-extra-constants

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Add (require 'etags) as etag functions are used.

Fixes byte-compiler warnings:

Warning: the following functions are not known to be
    defined: tags-verify-table, etags-tags-completion-table

etags.el is part of GNU Emacs so should be safe to include.

Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Update php-mode-modified for byte-compiler fixes
Merge branch 'github/pr/123'

* github/pr/123:
  Update php-mode-modified for byte-compiler fixes
  Add (require 'etags) as etag functions are used.
  Remove eval-when-compile.
  Add (require 'speedbar) as functions are used.
README: Document use of Web Mode constants and keywords
Merge branch 'ejmr/web-mode-constants'

* ejmr/web-mode-constants:
  README: Document use of Web Mode constants and keywords
  Use extra constants and keywords from Web Mode if available

Conflicts:
	README.md
	php-mode.el
Change the test for Issue 100 to require correct indentation

This patch also improves the test-case by adding an example of ‘use’
inside of a class definition so that we can check for proper
indentation within that context.

GitHub-Issue: 100
Line-up multiple namespaces in a multi-line ‘use’ statement

This patch modifies all four PHP Mode styles of indentation so that
code such as

    use ReflectionMethod,
        ReflectionObject,
        ReflectionProperty;

will align the namespaces.  We do this by changing how each style
handles the ‘topmost-into-cont’ language element.  That is the
syntactical element that CC Mode uses for the second and third lines
in the example above.  Normally we want to use the function
‘c-lineup-cascaded-calls’ for those elements.  With this patch we
still try to use that function first; however, if it performs no
indentation then we attempt to use ‘php-lineup-arglist-intro’, as that
will align the namespaces.

GitHub-Issue: 100
Merge branch 'ejmr/multiline-use-statements'

* ejmr/multiline-use-statements:
  Line-up multiple namespaces in a multi-line ‘use’ statement
  Change the test for Issue 100 to require correct indentation
  Fix two errors with the regex for matching namespace imports
  GitHub-Issue: 100 (Unit Test)
Increase the version number to 1.12
Update Changelog for version 1.12