More robust serial connection establishment & error handling

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.