Simplify representations of routing info.

Replace `SubedgeRoutingInfo` with a `namedtuple` and a wrapper function.
The API is maintained but instantiation is ~100ms faster and accessing
properties (which are now truly immutable) is around twice as fast.
Given how deeply nested this class is likely to be, this seems worthwhile.

Additionally, the number of lines of code is massively reduced.