Fix 1238

The union RouteData can't provide a union of values, since values may conflict. Instead, callers must independently enumerate the sub route datas and compare each one.

This also provides a more robust fix for 1233 (handling optional parameters)