Throw exceptions from Hash::combine()

When the key + value counts do not match Hash should throw an exception.
Silently doing the wrong thing is generally not a good idea. While this
change could break existing applications, those applications were
probably behaving incorrectly anyways.

Fixes #2470
Double rainbow.
Merge pull request #2530 from bar/patch-1

Double rainbow.
Parenthesis are preferred.
Trivial continue.
Merge pull request #2531 from bar/patch-1

Parenthesis are preferred.
Merge pull request #2532 from bar/patch-2

Trivial continue.
Merge pull request #2532 from bar/patch-2

Trivial continue.

fix phpcs error "Missing @throws tag in function comment"
Merge branch 'master' into master-phpcs-error-fix
Merge pull request #2534 from zoghal/master-phpcs-error-fix

fix phpcs error "Missing @throws tag in function comment"
Don't use FORWARDED_HOST when getting referer values.

HTTP_X_FORWARDED_HOST is supposed to be used by proxies to indicate the
original HTTP_HOST value. It has nothing to do with referer values.

Since the HTTP_X_FORWARDED_HOST is intended to replace the HOST header
in proxied setups, add a trustProxy parameter to host() and default it
to false. This maintains existing behavior and allows people to access
the proxied value.

Fixes #2537
Merge branch 'master' into 2.5