Shale/idempotent api requsets

can we change this to be now()+random chars?

also, if we're going to allow callers to set this, it should probably be on `Params`. The part that will be interesting is how to extract that in the `Backend` so you can put it in a header. (unless we allow you to specify it in the body *or* header, in which case we're good -- but I didn't think we did)