* Stop using the ALWAYSUP state machine for switches, this causes ISUP
to always get sent, which in certain cases, results in stated
rebooting the switch!
Added new ONIE state machine, which handles the way switches actually
boot into ONIE first and then does the bootinfo/grub dance, or does a
reload or does admin mode.
* Do not send PXEBOOTING from ONIE; this was a mistake, it throws us
into the PXEKERNEL state machine, which sometimes results is stated
rebooting the switch!
We still use PXEWAIT (it is sent by bootinfod), since that is the
"waiting" state that is wired into a lot of Emulab, it just happens to
now be a state in the ONIE state machine, so its legal.
* Fix a bug in libossetup, that was fooling libossetup_switch into
thinking the wrong thing.
* Add some timeouts to the libosload_mlnx code, sshd sometime refuses to
answer after a failed login. Strange.
* Fix a fork() problem in the switch reload code; gotta call exit, not
return! This was wreaking subtle (okay not so subtle) havoc in
libossetup.

Most important: if a <2TB blockstore has an ext4 filesystem, make sure we
create it without the 64bit and huge_file features. The former will make
it impossible (currently) to take a snapshot since imagezip does not handle
64-bit blocknumbers (working on it...)
Don't stripe an LVM LV over more than 8 devices. Some of the Clemson nodes
have 20+ disks and we won't buy much (and it might even be counterproductive)
to try to stripe writes over all devices all the time.
Still trying to get lvcreate to not prompt when one of the devices has an
old metadata prompt. -Zy is supposed to prevent that, but it doesn't. Try
adding -y as well.
Not related: in the BEGIN block, don't cat $ETCDIR/genvmtype unless it
actually exists. Not everything is a docker container ya know...

For nodes that have the 'cyclewhenoff' attribute set.
NOTE that you still need to set 'cyclewhenoff' on all IPMI-controlled
node types (or nodes) for which you want "power cycle" to turn them on.
The default behavior is still to NOT allow power cycling when off.

/proj. Applied to top level only for now, since that was reasonably easy
to do, since projects and group stuff is all done on ops already (where
the chflags has to run). We could apply this to experiment and image
directories too, but we all know the better approach is to stop mounting
/proj on experimental nodes, right?
Also a new script mkprojdirs to create/recreate missing project
directories and do the chflags (calls over to ops and uses the
existing proxy script).