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.

Depends on #3. [Is this how you deal with Pull Request dependencies? I hope merging #3 will update this PR to only include the one new commit. This github stuff is more painful than I’d hoped.]