nixos/network-interfaces: Implement the ability to add arbitrary routes

This is currently a work in progress as supporting default routes is probably not quite working. I'd appreciate testers when this code actually evaluates.
Ideally I want to make the old defaultGateway option defunct as the routes interface is more general. If we don't support the defaultGateway option, we can remove all of this code. However, in order to support the old option we need to know which interface the default route belongs. The speed of this implementation will not affect users who do not use the defaultGateway option, so it would probably be wise to steer them to writing more general routes using a warning.