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.

This is a change to the `normalize_path` regular expression to match trailing path parts in the scope to make parameters optional again. e.g.:

    # before 
     /(:optional):required => (/:optional):required
    # after (correct)
    /(:optional):required => /(:optional):required

Fixes #8578