support for overriding automatically detected interface type

The use case for this is when you have an interface like "mgmt0", which doesn't follow the regular naming conventions for interfaces.

Note that this depends on all the previous PRs (#6, #7, #8, #9, #10), or else it won't merge.

We are using all these modifications together at our site, and I did not see a great way to decouple this from all the others.