Update some documentation and add a setter for errorMessage

In #29 I made the `errorMessage` field protected with the intention of allowing it to be easily changed in the isValid implementation, but it's not very obvious at the moment :frowning:. This also allows it to be set externally if necessary.