support for SA flag in sam-record

In the sam spec, the "**SA**" attribute is used to store the "Other canonical alignments"

The following pull request

*  defines a new Interface **htsjdk.samtools.OtherCanonicalAlignment** defining the new alignment. I've used the same functions than in SAMRecord (getReferenceName, getAlignmentStart, etc... )
* implements a private implementation of htsjdk.samtools.OtherCanonicalAlignment in **htsjdk.samtools.SAMRecord**
* SAMRecord contains a new method **getOtherCanonicalAlignments()** returning a List<OtherCanonicalAlignment>
* I've added a definition of the SA flag in **htsjdk.samtools.ReservedTagConstants**
* I've implemented a test in **src/tests/java/htsjdk/samtools/OtherCanonicalAlignmentTest.java**

```bash
$ java -cp (...)  org.testng.TestNG   -testclass htsjdk.samtools.OtherCanonicalAlignmentTest
[Parser] Running:
  Command line suite


===============================================
Command line suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
```


If aln is on a different strand than the original alignment, wouldn't we need to reverse-complement the base and quality arrays? I believe our current methods for this do so in place, which is dangerous. So perhaps it would be best to create copies that can be manipulated as needed and then set.