Allow request_id keyword arg to public interface

Some usages are within backdrop and should include the Request-Id header
to enable easier tracing of requests in our distributed system.

For backdrop, we can pass in a function which will have access to the
Django request object and thus the headers.