Limit generated timestamps to one second precision.

This commit changes all cases which generate default timestamps to
time.Now to limit the timestamp to one second precision.  The code which
serializes and deserializes timestamps already does this, but it is useful
to make sure defaults don't exceed the precision of the protocol either.

With this change there is less chance that developers using defaults will
end up with structures that have a higher time precision than what will
ultimately be sent across the wire.
Export a new constant for MaxPrevOutIndex.

This commit exports a new constant for the maximum index a previous
outpoint can contain.
Export VarIntSerializeSize function.

This commit exports the VarIntSerializeSize function to provide callers
with an easy method to determine how many bytes it would take to serialize
the passed value as a variable length integer.
Export MaxVarIntPayload.
Export MaxBlockHeaderPayload.
Add a benchmark for TxSha.

This commit adds a benchmark for the TxSha function of a MsgTx.
Preallocate memory for the message header in WriteMessageN and the
serialization buffer in MsgTx's TxSha().

Benchmarking shows this is slightly faster due to avoiding the extra
garbage collection in addition to less peak memory usage.

Before: BenchmarkTxShaOld  500000         5626 ns/op
After:  BenchmarkTxShaNew  500000         5457 ns/op
Finish uncompleted comments in fixedIO_test.go.
Allow optional fields in MsgVersion decode.

This commit modifies the MsgVersion.BtcDecode function to match the
behavior where fields after the first address field (AddrYou) are optional
and only read if the buffer contains remaining bytes.

Unfortunately this means the reader for MsgVersion.BtcDecode must be a
*bytes.Buffer or an error is returned.  This is not an issue for the vast
majority of cases since all of the message reading code which is the main
way messages are read is already using a *bytes.Buffer, however, this
change might affect external callers if they are doing something special
with custom readers.

Fixes #14.
Add tests for optional message fields.

Since fields of a version message after the AddrMe field are optional,
this commit adds a series of tests which ensure parsing version messages
which omit each of the optional fields works properly.
Support RelayTx param in ver message for 70001+.

This commit adds support for the version message RelayTx parameter for
protocol version 70001+ as added by BIP0037.
Cleanup and finish relay transaction work.

- Coalesce the new bytes into the max message size constant to stay
  consistent
- Correct optional relay tx field handling
- Rename the relay transactions field to DisableRelayTx so the zero value
  of false has the correct default behavior
- Add tests for new bool fast paths in read/writeElement
- Stay consistent with version order in tests
- Add a single entry to TestVersionWire to test the new functionality
  instead of adding a whole new TextVersionRelayTx function.
- Use BIP0037 in tests instead of hard coding 70001
- Nuke XXX that 70001 is different since this is handled now
- Fix and cleanup some comments
- Update test coverage report
Correct some comments in block bytes breakdown.
Correct two more comments in block bytes breakdown.
Use the stack for most known sizes.

By using the stack for known sizes, there is less pressure on the
garbage collector.
add tmp wire file to .gitignore
Setup TravisCI to report cov stats to coveralls.io.

Also add a coveralls.io test coverage badge to the README.
Instruct TravisCI to install coverage report tool.
Remove test coverage report refs from README.md.

This is no longer needed since the repository is now configured to work
with coveralls.io for test coverage reporting.

Closes #17
Add godoc reference badge to README.md.