Prevent warnings due to struct/class tag mixups

Some compilers, e.g., the version of clang that comes with OS X Mavericks, produce warnings of the form

> In file included from src/toolkit/bamtools_merge.cpp:13:
src/api/BamWriter.h:19:1: warning: class 'BamAlignment' was previously declared as a struct
_class BamAlignment;_
src/api/BamAlignment.h:32:19: note: previous use is here
_struct API_EXPORT BamAlignment_

when a type is declared as a struct and later defined as a class, or vice versa.  When, as here, both are in header files, the diagnostic may be repeated for many translation units.

These suggested patches resolve these discrepancies.  Especially for a couple of the API ones, it would be worth reviewing the direction in which I've resolved them.