improve the routing mechanism by augmenting the routing error type with ...

...some information and a sound monoid instance. this addresses #10
@alpmestan: Why not `if-then-else`?