Your library looks really interesting (well documented too !) and I plan to integrate it into an existing CI-based website.
I have a question related to "zones". I installed the demo and took a look how it's working but I can't figure out how I can assign a freshly-created zone to a location and how I can qualify it as "tax" or "shipping" related.
It seems your method location_zones() only returns zones that are "already" assigned to locations as tax or shipping zone when the parameter $zone_type is specified.
As the sql query is "inner join"-based, orphan zones are never selected and thus never appear in the selectboxes "tax zones" and "shipping zones".
I don't know if it's a bug or if I simply misunderstood how it works globally...