Improvements in Adapter

  * Add YARD docs
  * Replace abstract connection method with attr_reader
Add docs for command classes
Unify command constructor
Add AbstractCommand to DRY things up more
Refine delete command behavior

  * it should always return deleted tuples
  * it accepts :result option
Make Update and Delete raise error on invalid tuple count

When result is set to :one we expect the delete and update commands to
alter only single tuple. This makes sure a command will not be executed
if target relation includes more than one tuple.

I believe this is a desired behavior since we're operating on relations
that may or may not be restricted and by defining commands we make an
explicit choice that a given command is supposed to change one or more
tuples.