Bugfix for required fields / Representation of int64 for Lua 5.1

Here's a bugfix and a feature I needed recently when working using lua-pb (sorry about the messy pull request, not sure how to submit it more cleanly.)

The bugfix: required fields must always be serialized, even if they have a default value set. I tested this interoperating with Google's Java protobuf library.

The feature: I needed to store and send int64 numbers outside the safe range for integers Lua 5.1 (2^53). The only way I could do this in pure Lua was storing int64 numbers as 8-byte strings.

Thank you for the work in lua-pb, it's really useful!
string.byte(val:sub(i,i))
-- can be simplified as just:
val:byte(i,i)

-- this doesn't return a string formated as base 16.  The base parameter is only used if "number" is a string.
tonumber(number, 16)
-- use:
string.format("%02X", num)