Speedup ZSchema

The biggest change here is using Bluebird promises instead of Q. Plus some other performance tweaks. Also introduced a `.registerFormatSync` function which tells zSchema that a custom format validator function is _always_ synchronous (boosts performance for simple format tests which do not require async operations). Overall speedup is over 3x.

As a side effect Bluebird promises do not have `.fail()` method but this can be fixed with an alias if needed:

```
Promise.fail = Promise.catch;
```