Applies the Single Responsibility Principle to blueeyes service combinators

Some combinators were performing more than one operation, which made them hard to compose - for example, request and response transcoding as well as checking and setting request headers. While this is appropriate for some higher-level combinators, the fundamental building block combinators should not be doing this.