Use tv4 module to validate factories and custom properties

We found this useful for making sure our factories are correct, and saves a step when debugging our E2E tests.

Now, whenever `factory` is called, the object that it generates is
validated against the schema using the JaySchema library. This means if
you pass invalid data, it will throw an `InvalidFactory` error, but only
if `options.validateProperties` is set to true. This can be done in the
constructor:

```
new Dorante(schema, { validateProperties: true });
```

Or just with the instance:

```
dorante.options.validateProperties = true;
```

Thoughts, feedback and so on welcome! Thanks :)

Hmm - not sure about that. To me it doesn't make sense to be a TypeError but I'm happy to be over ruled!