also pass data to beforeValidate hook, even when validation is not set
mark `inst.errors` to null when valid success

Also:
1. make `model.isValid` act like normal node.js async function
2. make `beforeValidate` breakable
return error as null when valid
make all intance method callback has a context of `this` as instance itself
Merge pull request #398 from ktmud/validate

also pass data to `beforeValidate` hook, even when validation is not set