Add upsert support to `Document.save` and `Document.saveAll`

This adds a second (optional) parameter to `Document.save` and
`Document.saveAll`, which allows you to specify how conflicts should be
handled when inserting documents.

When `options.conflict` is set to either `update` or `replace`, documents
will be updated or replaced when inserted if they already exist in the
database. If the value is set to anything else it will revert to `error`.

The default conflict resolution is `error`, which is in line with how it
worked before since that's what RethinkDB defaults to.