Add "result" option to create command DSL

This allows you to specify whether the command should return a single
tuple or many
Add abstract command classes
Separate command execution logic into execute and call methods
Add :one/:many result support to Update command