Shale/idempotency ids in headers

R? @cosn 

cc @kyleconroy 
it's fine to allow them to pick it, but it doesn't have to be the easiest way.

FWIW, I think doing `params.SetIdempotencyKey(params.GenerateIdempotencyKey())` is pretty non-idiomatic.

Instead, I think `params.AddIdempotencyKey()` and `params.IdempotencyKey = "foo"` is much cleaner