Optimize strtr w/ 2nd arg array

Fixes bug #63893: poor efficiency of strtr() using array with keys of
very different length.

The implementation is basically all new, which carries some risk with
it.

The algorithm is described in "A Fast Algorithm For Multi-Pattern
Searching" (1994) by Sun Wu and Udi Manber.
Refactoring, bugs & leaks
strtr() with 2nd param array - optimization

About a 1.25x speedup in my test script by writing the result string
only when a match is found and at the end instead of on each iteration.
Remove unused block
The compiler can figure this out
Remove _GNU_SOURCE, add local heap sort
NEWS for bug #63893
Merge branch 'PHP-5.4' into PHP-5.5

Conflicts:
	NEWS
Add zend_qsort_r & use it in strtr
UPGRADING.INTERNALS: document zend_qsort_r
Fixed inconsequential bug in strtr()
Merge branch 'strtr_wu94_54' into strtr_wu94_55
Merge remote-tracking branch 'remotes/cataphract/strtr_wu94_55' into PHP-5.5

* remotes/cataphract/strtr_wu94_55:
  Fixed inconsequential bug in strtr()
  UPGRADING.INTERNALS: document zend_qsort_r
  Add zend_qsort_r & use it in strtr
  NEWS for bug #63893
  Remove _GNU_SOURCE, add local heap sort
  The compiler can figure this out
  Remove unused block
  strtr() with 2nd param array - optimization
  Refactoring, bugs & leaks
  Optimize strtr w/ 2nd arg array