Scripting to add/remove BYOD devices

BYOD devices are typically gray/black-box hardware (and sometimes software). User shows up with a device, that at minimum has a control network interface and some ability to be rebooted. We have a variety of support for them: osid opmode/features, image boot/load timeout controls, node/type attributes. We have support for a few different types of management/console interfaces (perhaps we could package/automate this a bit, but not sure it's worth it). Then of course we support a variety of power control methods, including IPMI/ilo/drac, etc. These devices may not be imageable and may not have our clientside installed; that's fine and supported. If they support experiment ethernet network interfaces that plug into our fabric, we can isolate those into links.

The goal here is not to add new gray/black-box config/setup modes during experiment runtime -- but rather to better script the addition/removal of (temporary) user BYODs.

Here's what we already have: addstack, addswitch, addwire, addmanagementiface, addinterface.
There are also addspecialdeviceaddspecialiface but at least the former should be extended to handle a few more necessary things (osid, os features) (right now it assumes the presence of the GENERIC osid). Finally, there is newscript, which can take XML descriptions of new nodes (and their ifaces/ifacetypes/wires).

My sense is that by extending addspecialdevice and addspecialiface as mentioned above, and by ensuring that BYOD types can optionally only be used by their owners in their project(s), we can basically call this done for the initial case. (I'm sure when we actually start adding these things more regularly, we'll want to add further options to the addspecialdevice script to set various node/type attributes, etc.)