Does PUT/DELETE with version check.

- If version is -1 in PUT, then treat it as creation.
- If version > -1 in PUT, then treat it as set and we set the node if
and only if the versions match.
- If version > -1 in DELETE, then delete node if and only if versions
match.
Add integration test for PUT/DELETE with version check.