Implement command/query separation

It enables:
1. Handling errors differently
2. Handling commands and queries
Merge pull request #3 from vsavkin/add_response_object

Implement command/query separation