Add support for conditional saving model.

Concurrent nodes of an application attempting to update the same record might result in data corruption/loss. To help with this scenario, this PR adds an optional `conditions` parameter on `Model.Save`. When the conditions are not met, updated record count will be `0` letting the application know the failure.