Fix Unmarshal's handling of optional byte fields

Without this patch, the implementation does not allow differentiating
between an empty bytestring field value and an unspecified field.

Additionally, these lines were previously incorrect due to this excerpt
from https://developers.google.com/protocol-buffers/docs/proto:
"optional is compatible with repeated. Given serialized data of a
repeated field as input, clients that expect this field to be optional
will take the last input value if it's a primitive type field or merge
all input elements if it's a message type field."

Closes issue #34