Start writing a protocol pseudo-specification

None of the specified structure is implemented yet, and it's going to be
a pretty large change to the server and client.  But hopefully it will
be safe, extensible, and easy to parse & generate.

The "protocol" field of events and commands solves several problems,
including the separation of raw line data and structured IRC message
data, and the possibility of namespaced client events.

I also hope that there will be some nice way to define "protocol
projections," which would basically be persistent protocol-specific
snapshots of custom state folding functions.  For example, a
configurable service would define a projection from event sequence to
state value, and on resumption would only need to be initialized with
the latest projection and the following suffix of the event log.
Broken first jab at new event structure
Non-terrible event parser
Command parsing
Event and command serialization
Everything builds now but IRC<->JSON is undefined
Implement JSON->IRC
Implement IRC->JSON
Update remote control scripts
Fix bug in serialization; server seems okay
Add Arbitrary instances
Web client working somewhat
Fix client's event serialization
Mark serialization stuff as done in TODO
Use newtypes for event & command data
Update TODO
Klatch.Message.js: improve area name algorithm
Web client styling
TODO: socket line stuff now investigated
Somewhat kludgy fix to MarkAsRead