Updating the phone validation routine.

According to NANPA, there are area codes and exchanges that are invalid or reserved and not available for assignment. This would make those phone numbers invalid. For example:

- area-codes: 555, N11, N9X, 37X, 96X
- exchanges: N11
- numbers: 555-0100 thru 555-0199

You could also say 555-1212 is invalid as it is assigned as information for the US.

I changed the tests where 555 as an area code was being used as the assertion will give it a false on the area code and not the exchange as intended.
Update index.php to serve static files with query strings.

Trim off the query string before attempting to locate the file on the
filesystem. Thanks to Marko Marković for the initial patch.

Fixes #3910
Update ServerShell to use provided documentRoot.

Fix ServerShell from using the wrong path to the routing script when
a custom document root is used. Thanks to Marko Marković for the patch.

Fixes #3909
Don't use inline assignment.

CakePHP generally avoids inline assignment as it can be confusing and do
the wrong thing.
Adds option to multiply decimal percentages. Fixes #3814
I split out the regex to make it more readable as requested.
Updated Inflector's 'pluralize and singularize to correctly handle addisional words.
Updated InflectorTest to test new words.
Added more words to InflectorTest
Fixed indenting
Merge pull request #1412 from wernerhp/master

Inflector pluralize and singularize update
Merge pull request #1385 from LeaseWeb/2.4

 Add option to send email attachment from string (not only from file).
Correct documentation.

Options are traditionally above the @param block as it results in easier
to read API docs.
Fix downloading Ranges in files.

Correctly handle ranges that don't terminate at the end of the file.
Also reject invalid ranges as described in RFC-2616.

Thanks to Kim Biesbjerg for the initial patch.

Fixes #3914
Merge pull request #1408 from dereuromark/master-cleanup

remove @access and unnecessary $name
Introduce the `strip` argument to Router.

This allows callers to request that the basepath *not* be stripped off
when normalizing string URL's. This is important in AuthComponent when
handling redirect URL's as the redirect location could point to
a controller that shares a name with the base path.

Refs #3897
Refs #3916
Update AuthComponent to not strip when normalizing URLs.

Revert most of the changes done to fix #3897 originally and try
a different strategy of solving the base path issues and not breaking
apps running in a subdirectory.

Fixes #3916
Revert previous changes.

Adding this parameter was a mistake. Remove it.
Rebalance where URL normalization happens in AuthComponent.

Make URL's not include the base path when storing them in the session.
This makes future redirection simpler. When URL's are an array use
Router::url() on them.

Fixes #3916
Pages controller should render 404 on missing view file
use a simpler rewrite rule

The capture group isn't used - so don't captuer it
There are no get args in the rewrite rule so there's no need to
request appending the existing get args - they are unmodified.