Complex vlan driver

Work in progress.  The driver is written, but there are no tests.  We should work on getting our setup upstairs working, because this code NEEDS tests.

Note that the first three commits (up to commit a1e1428) are all tested.