change Model#validate() to return a non-pending deferred

since there are situations where validation involves async tasks (such as validating a query expression at the gateway), we want `Model#validate()` to return a deferred.

in the default case it will already be either resolved or rejected.