Update some documentation and add a setter for errorMessage

I made it protected with the intention of allowing it to be easily changed in the isValid implementation, but it's not very obvious at the moment :X