more robust serial conn establishment

Instead of trying to establish the serial connection in the Board constructor,
delegate this to a separate `setup()`. (**API change**!)
This allows the user to add listeners to the Board’s `error` event, which
signifies that the connection could not be established. (This was already
intended, but wasn't possible, as far as I can tell.)
Also displays a more intuitive error message.
allow method chaining setup()

`setup()` returns `this`, which allows for an easier transition from old code:

```
var board = new arduino.Board(); // old
var board = new arduino.Board().setup(); // new
```
examples updated
Resolved conflict
Merge branch 'tjanson-gracefulish-detectconnect'