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

Additional work on #195

Waiting on #213 to add move construction/assignment tests
this should for sure be a unique_ptr, as it doesn't share ownership with anyone else.