Unify the the Printing Interface

The C printing interface had developed over the months and evolved.  There were a couple of different flavors; some were very cumbersome.  Here we reign in the differences and create a cleaner, public interface.  This addresses Issue #40.  Also incorporates some ideas from PR #44 from @folays.