feat(validate): Support for promises

Fixes #257 

WIP!

Needs tests.