nurse shark, first draft

Open for feedback, but *not* for merge. I'll be working on this branch as well to update the viz code for the new data model.

The only things you can test here presently are validation with the node script `dev/validate-with-timing.js` and the tests for nurse shark, `test/nurseshark_test.js`. The visualization itself is broken, as expected.

@cheddar I added a couple of things that were missing to the schematron, as per my comment on the Trello card.
The way the errors are generated, this is going to be prefixed with the field-path to this point.  which might look weird, i.e. it will end up showing like

```
settings.bgTarget.Failed all schemas ["rate should be a number", "target should be below 1000"], got [{ object: "here" }]
```

Hrm, reading that, maybe it's not so weird...  Anyway, just wanted to make sure you were aware of how the error message might actually be generated.