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
Initial support for VCFs

this is a rather large commit, but the functionality being added is very
similar to the ones already existing for SAM records.

Variant Header
--------------

VariantHeader is similar to the SamHeader in that it is only produced
once by the reader and a pointer to it is passed around to all the vcf
records. In this commit we provide the full API for creating headers
through the VariantHeaderBuilder (this may change in the future),
reading header using the VariantReader and writing out headers using the
VariantWriter.

Itemized changes:

* add VariantHeaderBuilder class with full construction API
* add VariantHeader implmentation with full API to access the useful parts of the header more functionality should only be added if needed
* add tests to all member functions of the api and the builder.

Variant Body
------------

VariantBody is similar to the SamBody in that it carries all of the
information in the VCF record. The current API only offers minimal
functionality to the simple fields of the record, more will be added
soon (as needed). There is no setter or builder to create variant
bodies, but the VariantReader can load a variant body from a VCF/BCF
file using one of the provided iterators. Variant is just like Sam, a
wrapper object that inherits from VarianBody and contains a pointer to a
the corresponding VariantHeader.

Itemized changes:

* Variant and VariantBody API first implementation (still lots to do, only basic functionality added)
* add tests to the vcf api

Readers and Writers
------------------

Simple implementation of readers and writers for variants (similar to
the Sam readers and writers).

* add VariantWriter to write variant records to VCF/BCF files
* add VariantReader to read in VCF/BCF files into Variant objects
* add VariantIterator a simple one record at a time iterator for variants use it with the SingleVariantReader alias (similar to SingleSamReader)

General updates to the framework
--------------------------------

* move utils and hts_memory to their own namespace and directories
* generalize c-string array to vector<string> conversion for htslib structures
* update copy-assignment constructors to give the strong exception guarantee
* add minor corrections to doxygen comments

closes #36 #35 #34
Merge pull request #41 from MauricioCarneiro/mc_vcf_basic_api

Initial support for VCFs