This will make unit tests possible, more consistent code and well, you get the idea. We're instantiating a new instance on export because this will mean that users won't have to change how they already use the library - it should just work as is.
That's right folks, fixtures don't really make sense here. Instead I have opted to go through and validate almost* every value of each message that was in fixtures. This has caused me to find two problems, one with ISO8601 parsing but I blame other people for that, but also with the structured data parsing so as of this commit TESTS FAIL with FIXME left where they need fixing. * Times in 3164 tests are not immediately tested because they feature no year and no TZ, new Date('...') will use this TZ and it's known DST, and this year. Tests will break until I find a better way of doing things.
This has been modified from https://github.com/mikeal/request/blob/master/tests/run.js and modified in line with the rest of my code.