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
===============================================
```


I'm not sure that the DefaultSAMRecordFactory is the appropriate way to construct new SAMRecords here. The original record may have been made with a non-default factory. It might also be a subclass of SAMRecord, in which case there might be some unexpected differences with the new records.

Perhaps this method could be made to take as a parameter whatever SAMRecordFactory was used to make the original record?  Or perhaps SAMRecords could be created using clone(), and subsequently cleared of any fields we do not want set? It's not entirely clear to me what is the most robust way to create these records.