Modify users input before the running the validation.

As the title says, it would be a lot more useful if the before() callback was called on the users' input prior to validation. 

I want to be able to do something like:

```javascript
{
  name: 'date',
  type: 'string',
  required: true,
  format: 'date-time',
  default: 'now',
  before: function(value) {
    return value === 'now' ? new Date().toISOString() : value;
  }
}
```

...but I cannot do that as the validation for the 'date-time' format will fail as it will be using the 'default' value ('now') instead of the transformed date value (new Date().toISOString()). 

I've added a new test to check if the before callback is run prior to validation.