Sam: constructors for optional field and optional field values

[Sam.optional_field] is a private type and the only way to build a
value is through the [Sam.parse_optional_field] function, which is not
adequate when parsing BAM.

Added a constructor for [optional_field] which takes
[optional_field_value]s. This is also a private type, so
invariant-checking constructors and parsers were added too.
Merge pull request #141 from pveber/master

Sam: a constructor for optional field