Initial support for variable-length data fields + new shared memory model

-Added classes and enums to provide convenient access to cigar, base, and
 base qualities

-Implemented shared memory model with reference-counted pointers.
 htslib memory is shared between a SamBody and the classes that
 encapsulate its variable-length data unless the user performs a deep
 copy via the usual C++ copy semantics.

-Removed make_internal_copy() and associated functions from the
 sam_body API. Deep copies are now done exclusively via copy
 construction/assignment.

-Refactored iterators/readers to adjust to the new memory model.

-Refactored sam_header and sam classes to avoid allocating a new
 header on every header access.

-Basic tests

TODOs:

-Setter methods for the variable-length fields (will require htslib
 changes).

-Auxiliary data support

-Better tests (after setters are implemented)
Merge pull request #40 from droazen/dr_var_length_data_field_support

Initial support for variable-length data fields + new shared memory model
move utils and hts_memory to their own namespace and directories
add VariantHeaderBuilder

implement basic builder API
add simple test
rev up htslib
first implementation of VariantHeader
update hts memory links to work with David's updates