* prevent connection write collisions
When multiple calls are made on the same connection, it's possible for
the writes to collide with each other. This adds a write mutex when
communicating with the libvirt daemon.
- Add a yacc-based parser and a hand-written lexer to read the
remote_protocol.x file from libvirt's sources.
- Use the new parser to generate the constants used to communicate with
libvirt.
This fixes a bug in truncated response payload handling. Payloads
requiring more than one call to `Read()` were overwiting the previous
Read()'s buffer contents. Because we know the response payload size, we
can simply call `io.ReadAll()` rather than looping over calls to
`Read()`.
This splits out the mock libvirt server for testing within
other packages. Constants from the main libvirt package
have been moved to a separate package, constants, for shared access.