provide user data storage on request interface

expand Request interface to provide 3 new methods:

- SetUserData
- GetUserData
- DeleteUserData

intended to allow middleware to store/fetch/delete arbitrary data on the request, but
other phases are free to do so as well