Sam: implementation of mate_alignment_stop()

* fix off-by-one bug on Sam::alignment_stop (it was reporting the base after the last inclusive base, contradicting the docs)
* refactor cigar operator parsing routine from SamBuilder to Cigar class for mutual use
* add consumes_read_bases and consumes_reference_bases as static methods to the Cigar class
* add tests to the new API and all new functions

This sets the base for issue #6
The new overload for mate_alignment_stop() really needs a better explanation in the docs. We should explain how to properly use it with a code example (get the MC tag, call missing(), then call this function), and also more clearly explain that it's intended for high performance when the overhead of try/catch with the no-arg version is too great.