Callback-oriented channel API

Largely this is a case of factoring out the argument/options handling
to api_args and referring to it from channel_model and the new
callback_model.
Start of tests for the callback API
More callback API tests
More callback api tests, and a fix to channel#get
A bit of explanation for api_args.publish

(And I thought it would be clearer to name the exported object like a
class, i.e., with a capital, since `argt` which would look similar
appears in function bodies).