Fix #1051: collectd plugin setting timestamp to 0

Try to use high resolution timestamp but if it's 0, fall back to
unix timestamp.

Collectd timestamps are uint64 and influxdb uses int64.  Change
to use type conversion instead of converting to string and then
parsing the string back to int64.  Also, test if the collectd
timestamp is too large for influxdb.  If it is, wrap around and
log an error message the first time but don't fill the log with
messages for every entry thereafter.

Move packet parsing code into its own function so it can be unit
tested.

Add unit tests to for packets using high resolution and unix
timestamps.
To fix the issue of a 0 timestamp, I modified the code that converts `gollectd.Packet`s to influxdb series.  I needed gollectd packets to use for testing.  The `gollectd.Packets` function, which parses raw packet data also requires a `Types` parameter, which holds a collectd types.db.  The `gollectd.TypesDB` function will only load a file and I didn't want the test to depend on an external file.  So, I copied `gollectd.TypesDB` into our code and modified it to accept a string.  This was a temporary fix.  I forked gollectd last night, refactored `TypesDB` and made a PR...which was just merged in.  I can now make another change now to pull `TypesDB` out of our code.