Re-organize smf.h

Move struct tag typedefs to top of file. Move function definitions below
struct declarations. This is preliminary work for using Gtk-doctools.
Added reference counting to all types

Add ref_count and ref/unref functions to smf_t, smf_track_t, smf_event_t,
and smf_tempo_t. Use GPtrArray with GDestroyNotify bound to unref functions
for creation of tracks and event arrays. Add smf_remove_track and
smf_track_remove_event used as the mechanics behind
smf_track_remove_from_smf and smf_event_remove_from_track respectively.
These new functions will provide a clearer API for GObject Introspection
bindings.
Rename structs and functions to support GObject Introspection

Rename smf_t struct to SmfFile and smilarly rename all lower_case_t structs
to use CamelCase. Replace all functions relating to smf_t to use smf_file_
as the prefix. Keep prior named functions around for API/ABI compatibility
and mark them as deprecated with G_DEPRECATED_FOR.
Replace usage of WARN_UNUSED_RESULT with G_GNUC_WARN_UNUSED_RESULT.

This is preliminary work for supporting GObject Introspection to supply
language bindings. GI requires a somewhat strict naming convention, see:
https://bugzilla.gnome.org/show_bug.cgi?id=720090
Update doc strings to gtk-doc/introspection formatting

Reformat all API documentation to conform to gtk-doc/introspection style.
This allows usage of docbook html and man page generation using the gtk-doc
tool. Add initial introspection annotations for later use by introspection
based bindings. See:
https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations
Add smf_event_get_buffer function

Add function to retrieve an events buffer with memory managment annotations.
This allows language bindings to read the buffer without leaking.
Add GObject Introspection support

Add versioning scheme to configure.ac along with libtool versioning.
Add introspection support using introspection.m4 along with the
GOBJECT_INTROSPECTION_CHECK macro. Introspection can be turned
off using ./configure --enable-introspection=no.
Add conditional logic to code by passing preprocessor define
"HAVE_INTROSPECTION". When introspection is enabled, extra GType functions
are built to provide introspection with GObject "boxing" for managing a
structs memory generically.
Add Python unittests

Add initial unittest which make use of PyGObject for accessing libsmf
through introspection.
Add GTK-Doc to for make distcheck

Add building of API documentation and smfsh command using gtk-doc in both
html and man formats. This must be enabled using:
./configure --enable-gtk-doc --enable-man
Both the html and man pages are then dynamically created and will be
included with dist packages created with "make distcheck".