Remove raw pointers from Sam Readers/Iterators and Sam/Variant Writers

Additional work on #195

Waiting on #213 to add move construction/assignment tests
since you are guaranteed to make a copy of both these shared_ptr they qualify to the pass-by-value optimization rule