Create new, pure js validator that is faster

On example data I downloaded, Joi runs in 2484 milliseconds.  Joy runs in 38 milliseconds and I believe it is verifying the same stuff.

@jebeck @nicolashery Give this a once over and make sure you believe it's verifying the same stuff as well.

I veered off from the Joi API in a couple places.  The biggest is that I assumed that things are generally required and if they are optional, that should be pointed out.  Joi does it the other way and forces you to specify what is required.
`joinKey` and `normalTime` should be called out as optional so not to error on every datum without one or the other, but this doesn't happen. Why?

Also there's something wrong somewhere in the pipeline with `isAnId`...improper IDs aren't failing. It's not the regex. I checked that and it fails when it should. Perhaps these two issues (required vs. optional and bad IDs getting through) are related?