Maintain backwards compatibility for old clients.

If the client sends a request_id we know it supports the new protocol,
otherwise we make sure to only send one response for each request.
Send useful messages to Einhornsh when upgrading.
Make log message less confusing
Subscription tags should be symbols not strings
Code style fixes
Better handling of invalid commands.

This fixes the problems noticed by gdb at
https://github.com/stripe/einhorn/pull/28/files#r5829490

It also fixes the error handling to work in Ruby 1.9 (which uses Psych to
parse YAML) and also handles syntactically valid yaml that results in an
invalid command (eg: '--- false')