Allow options on `put()`.

Namely, the `uniqueKey` option. This allows a `put` to turn into an
`update` not just on a primary key conflict, but also a unique key
conflict.

Another upshot to this is that `update()` now behaves more reasonably
and is a candidate for exposing as a documented public interface.