Fix unimplemented types; INTEGER parsing consistent.

* If GetMultiple or GetBulk returns a MIB with an Unimplemented type
  (e.g. Opaque) the whole call would return an error. It's more
  desirable to return an UnknownType so it's at least possible to read
  other values.  The UnknownType's byte number has been set to 0x00.
  Java SNMP takes the same approach.

* Minor bugfix - The RequestID was not being correctly parsed.

* Added FIXME to the RequestID.  This should be set to an atomic counter
  and the read should discard (and retry) if the sent ID does not match
  the received ID. In the current implementation it would be possible
  for a late arriving packet form a pervious (failed) request to be
  incorrectly associated with the call. This will be fixed in a future
  commit.

* Parsing of INTEGER values in parseRawField was incorrect.  It would
  returned an unsigned type if it was more than one byte.  This lead to
  issues where say a RequestID was < 256 it would return an int, while
  if it was > 256 it would return a uint. The logic in parseRaw is now
  consistent with decodeValue.

* Minor formatting as suggested by @virtuallynathan, in helper.go.
update readme

Thanks to @virtuallynathan.
Walk code, by Chris Dance (codedance).
Added IPv6 parsing support.

Note: I personally think we should be returning an IP{} type rather than
a string, but I don't want to break the external API.
Implemented retry support

UDP is connectionless and retry needs to be implemented in code. This
retry logic is similar to what you'll see in net-snmp and Snmp4J.
Increased read buffer size

We don't have correct read buffer handling. If a packet length exceeds
our read buffer, we'll only get a partial read and parsing will fail.
The correct logic would be to read more off the connection appending the
data.  Implementing this correctly is quite complex.  Added a FIXME, but
in the meantime we'll increase the size of the buffer to minimize risk.
Seed our random number

* Go's rand library seems a bit brain dead in this regard!
Added test to validate API consistency
Added generic end-to-end integration test + bugfix

* The generic e2e test should work against any standard SNMP MIB-2 host.
* The e2e test found a bug in the retry code. Connection refused errors
  were being incorrectly override as a timeout style error.
Documented new tests in README
Ensure generic e2e test works on Widnows too
golint: start from gosnmp.go

comments
oid_count oidCount
packet_out packetOut, non_repeaters nonRepeaters
max_repetitions maxRepetitions
slice_length sliceLength
MAX_OIDS maxOids
IpAddress IPAddress
golint: gosnp.go
golint, gofmt: helper.go, misc_test.go
golint: marshal.go
fix TODO: PDUType marshal.go. go fmt
golint: misc_test.go
golint: marshal_test.go part 1
golint: marshal_test.go part 2
golint: marshal_test.go part 3