Add OrderDeviceList to Demo Device reordering

Demo progress on Issue #27

Takes a DeviceList object as an input, splits of the 0th element (master),
and allows user to drag & drop reorder the elements within a listbox to
reorder the devices.  Writes out a device list with the new ordering
unless the user presses cancel, in which case the original device list is
passed through.  Has a boolean output indicating whether any changes were
made, in case that is useful to the caller.
Merge remote-tracking branch 'origin/master' into improve-layout-portability