Initializes request objects with arguments

Rather than instantiate blank Request objects and using setter methods
to set its attributes, requests are instantiated with their parameters.
This will allow more controlled and immediate recognition of invalid
requests.
Initializes response objects with arguments

Response objects are initialized with all their attributes as arguments,
rather than as empty frames requiring the use of setter methods. Will
provide greater control for response validation. All specs have been
updated according to the new way of initializing responses.