Add `idempotency_key` keyword argument

Implement idempotent requests.

r? @shalecraig