Merge pull request #2 from rjpower/master

Dump current parse position when an error occurs.
bug fix: bookmark goes beyond read barrier

RPC marshaling is done with a buffer. IO threads reads from
head of the buffer, and worker threads append reply message
to end of the buffer. To reduce lock contension between IO
threads and worker threads, the buffer provides a snapshot
of current tail position (read barrier). IO thread may read
till this point without holding any locks.

In order to add size info to RPC packets, we have to write a
placeholder at the begining of a packet, and update it when
message body is fully written and the size is determined.
Issue #3 happens when read barrier goes behind a placeholder,
which means a not-ready-yet segment is exposed to IO threads.

This commit should fix issue #3 by disallowing the behavior
mentioned above.
minor enhance
hmm, dont have a good solution, use full locking now
Use macros to capture file, line number when logging.