Add support for varints.

Similar to other integer types except you must demarshal varints
greater than 8 bytes using a *big.Int. It is possible to detect
unset varint fields when fetching using a **big.Int double pointer.
Maybe all types should support this?

I refactored the int unmarshaling code so int, biging and varint can
share some code.