Implement carp, trunk and vlan virtual interfaces

This code adds the ability to create the following virtual interfaces:

* trunk
* carp
* vlan