Use JaySchema to validate factories and custom properties

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;
```