Hostname route should throw an exception if route definition contains disallowed character

If a hostname route is constructed with a route containing a disallowed character (one outside of `[a-z0-9-.]`) a RuntimeException should be thrown, as the route is misconfigured. 

Fixes #5656
An alternative:

```
if ( 1 !== preg_match('(\G(?P<literal>[a-z0-9-.]*)(?P<token>[:{\[\]]|$))', $def, $matches, 0, $currentPos) ) {
    throw new Exception\RuntimeException('Matched hostname literal contains a disallowed character');
}
```

Functionally identical, just all on one line.  @Ocramius I can update the PR if you'd prefer I check the result this way.