Adding a new test for the failing behavior
Now using `preg_replace_callback()` instead of
`preg_match_all()` with a foreach loop, as the `str_replace()` was
causing multiple similar items to be escaped more than once

This fix was a **GREAT** idea conceived by @taliesinnz in GH issue #251.
She/he suggested I make the fix rather than he/she making a pull request
directly, so here it is. :)

This fix has the wonderful side-effect of increasing performance of
regular expression compilation, as it doesn't have to break apart the
string and replace each location multiple times.

Benchmarks show that this method is more linear (and consistent) in
processing time, so this is great. :+1:
Switching the `preg_match_all()` regular expression
compile branch logic to use `preg_replace_callback()` instead, again as
suggested by @taliesinnz.
Finally switching the `match_types` array from a
local variable to an object property. This keeps us from redefining it
over and over (for each callback call) and finally allows extending
classes to set their own match_types
Now also converting the `getPathFor()` method over
to use `preg_replace_callback()` instead of `preg_match_all()`.

This switch should provide the same benefits as the switch made in the
`compileRoute()` method, while also providing a more consistent regular
expression processing style.
Now skipping unused parameters in the `list()`
calls, so that we don't bother assigning variables that we don't use
Better comments for clarifying the steps taken
Removing a capture group from the route compile
regular expression, as its never used
Removing invalid `+` quantifiers from the route
compilation regular expression
Merge pull request #253 from Rican7/bugfix/regex-processing-causing-overquoting

Bugfix - Regex processing causing overquoting/overescaping