Implement ver 2 which works with io.Reader/Writer.

This commit adds a new version of the package in the xdr2 directory which
accepts standard io.Reader and io.Writer interfaces for the Marshal,
Unmarshal, NewEncoder, and NewDecoder functions instead of raw byte
slices.

This provides greater flexibility for things such as working directly with
files and network connections.
Add comprehensive suite of tests for version 2.

This commit adds a comprehensive suite of tests for the Marshal, Unmarshal,
NewEncoder, and NewDecoder public interfaces.
Add benchmarks for version 2.