Always throw Error subclasses instead of strings, closes #38