delay open serialport to trap errors

On Mac OSX, when the serial port is not available the error is not trapped and the process exits. These changes delay opening the SP until the error handler is in place.
Problematic I'm sure. 

Two options here:

1) assume that error event handling and the open is only done when SerialPort is not passed in
2) always add the error handler, check to see whether we need to open

Number 1 would be my preference