GetUser retrieves the User struct from the request context. The only
time that we'll use this helper is when we logically expect there to be User struct
value in the context, and if it doesn't exist it will firmly be an 'unexpected' error.
SetUser method returns a new copy of the request with the provided
User struct added to the context. Note that we use our userContextKey constant as the
key.