protocol improvements: send the verb outside the array, terminate all responses with an empty array.

the primary goal was to increase the regularity of the protocol, so that ROWS responses were not an exceptional case.

this made it much easier to return the full response from the test helpers, which in turn permitted refactoring the tests to make it much easier to follow the conversation.  other changes were made to make the test read in the same order that the conversation happen.  mocha was removed as a test dependency and more flexibility in handling responses was gained.

the protocol change also increased efficiency because now arguments are unpacked directly into the target structures; a similar effect can be achieved by using move constructors, but that still results in copying the wrapping objects, so this is one step better.

finally, this will permit the refactor in the next commit to split up the big command loop methods.
split up the big protocol-dispatch methods