Error characterization tests

This piggybacks on #17 and adds a bunch of characterization tests for validator errors, focusing on what I think are the main methods likely to be used (i.e. the methods documented in the README).

Because I'm just trying to characterize how errors currently work, there are a few TODOs or FIXMEs noted in the new test file for things to be improved later. This also doesn't include a writeup on errors in the README because I thought first we might want to make a few changes or improvements to how we think it **should** be done before I write up how it's currently being done.

`errors.test.js` is organized basically as

    <method A>
        <error A>
            scenario 1 in which method A results in error A
            ...
            scenario n in which method A results in error A
        <error B>
            ...
    <method B>
        ....

Methods which call other tested methods (hence possibly returning the latter's error codes) have delegation tests that simply mock out the sub-method, demonstrating that one relies on the other rather than duplicating scenarios needlessly between the two.