Supporting custom annotation readers

Implementation for #372
Not sure I like a deep package structure for every aspect of the operation. If its getting cluttered, I'd prefer we have at the most a **...operation.request** and an **...operation.response** package and a top level **...operation** package. Do you have an opinion @adrianbk?