Return a promise from save function in all cases

Previous to this commit validation errors would only be reported via a
callback.a
1.1.0