Change routing `normalize_path` regular expression to match /(:param)other_stuff fixes #8578

There is an issue where a scoped optional parameter is incorrectly being substituted when at the root of a route so as that it then doesn't match without the parameter at the root. e.g.

`scope "/(:optional/):required"` should match both `/optional/required` and `/required`

This is a change to the `normalize_path` regular expression fixing the incorrect substitution of the root `/` when used with an optional param, which make parameters optional again. e.g.:

    # before 
     /(:optional/):required => (/:optional):required
    # after (correct)
    /(:optional/):required => /(:optional/):required

Fixes #8578

**Edit** Updated the text to make it clearer what this is fixing