So... found the problem. Windows is enumerating my serial ports as:
2016-10-14 22:48:12,604 - DEBUG - Considering serial port \Device\Serial0 -> COM1.
2016-10-14 22:48:12,604 - DEBUG - Considering serial port \Device\VCP0 -> COM9.
By default, the code in USBPrinterManager.py only lists what it thinks are USB ports, and it does this by checking the name contains the string "USBSER". My USB serial port is named "VCP0" (virtual communications port #0) so doesn't match. If you change the code in _updateThread() to have:
result = self.getSerialPortList(only_list_usb = False)
then this filter is removed and the printer appears.
Now I can print.
Except that the printer control panel has disappeared. All I get is a minimal display with the temperatures and a progress bar. Now to go and get the "pronterface UI" back.
So far, for me, Cura 2.x is a massive step backwards... configuring the printer was a massive PITA compared to Cura 1.x, then the issue with the detection, now the removal of the decent printer control UI. Not a good experience and definitely doesn't feel like an upgrade.