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

Additional work on #195

Waiting on #213 to add move construction/assignment tests
disagree -- shared pointers should be passed by reference in general when you don't intent to increment the reference count (eg., passing them as arguments)