Fix sam_format1 failure on lines ending in integer/float tags and issue #63

This fixes a bug in sam_format1 where it gets a check to see if it has gone
off the end of the bam1_t data structure wrong when writing out optional
tags.  This affects any line ending in an integer or floating-point tag.

Also fixes __skip_tag so that it works properly with floating point tags
(issue #63).
Rewrite __skip_tag() as skip_aux()

Redo this code similarly to swap_data() and its infrastructure, so that
it obviously handles all tag types, and making it a function rather than
an invalidly-named macro.  Fixes #63.

Fix a raft of bugs in swap_data()'s B handling -- though do we ever expect
to see another big-endian HPC machine?  Complete the partial support for
XX:d:1.5 aux tags (type 'd' for double is an existing samtools extension).
Add sam aux field tests
Merge sam_format1() and __skip_tag() fixes (PR #73)