Updated protobuf::read to support reading from pipe, socket or FIFO.

Updates stout's protobuf::read by introducing the "undoFailed" flag
which should be set towards false (default) on file descriptors that
are connected to a pipe, socket or FIFO. This flag may be set towards
true on file descriptors supporting random access, enabling seek
position reverting (aka undoing) on failed read attempts.

Review: https://reviews.apache.org/r/20216
Updated uses of protobuf::read towards explicit undo where needed.

Review: https://reviews.apache.org/r/20237