Allow reading/writing sequences of pages with mixed block types

The current implementation causes problems when a single remote request
gets multiple pages that have different encodings for a given column. This
could happen, for example, if the stream is the result of a union of
subqueries or tables that produce different types of blocks for any given column.

The reason is that the identifier for the block encodings is written once per request
based on the encodings of the first page. This fix changes the wire serialization format
to include the block encodings for each page in the response.

Fixes https://github.com/facebook/presto/issues/1874