Various changes to support shared nodes (a node that can be shared
between experiments and projects using VMs (jail, vservers, openvz, etc). * Add new slot to virt_nodes called "sharing_mode". Only admins can set this, via the NS file, to create an experiment consisting of nodes that are shared. A text string, in case we want to support different kinds of sharing modes. * Add new slot to reserved called "sharing_mode". This is copied from the virt_nodes table as above. Also, virtnodes that are currently allocated to a shared node, get this slot set, so that the rest of the system knows. * Add a toklen to the "erole" slot of the reserved table, called "sharedhost"; erole is returned to the client when it boots, and this is how the client knows it is acting as a shared host. We could probably compute this value in tmcd, but I did not want to change that now. * Add new slot to interfaces called "trunk". This is set when an interface should be set to trunking by "snmpit -t". We previously used the vinterfaces table to determine this, but there are other cases when we want an interface to be trunked. Aside: there is a problem with this approach I realized later; trunked interfaces are essentially shared resources of multiple vlans, which does not play well with the vlan optimizations in swapmod. * Add new slot to vinterfaces called "bandwidth"; this is the amount of bandwidth that link is defined to use (via the NS file). This is used in resource scheduling of link bandwidth. * Add new slot to interface_state called "remaining_bandwidth". For a shared node, we have to reserve both the nodes and the link bandwidth. We use this slot (with locking) from the mapper_wrapper to make sure that the link has not been consumed already by another assignment running at the same time. * Add new tokens "veth-ne", "veth-en", and "vlans" to the osfeatures slot of the os_info table. veth-en (encap) and veth-ne (no-encap) are intended to replace the current "veths" feature. "vlans" is set for OSs that support vlan devices. * Fix the primary key on the linkdelays table; it needed to have the exptidx in the key so that we can allocated linkdelays for different experiments to the same node.