Allow multiple init and run callbacks using callback DSL

This changes the service handler callbacks for before/after
init/run to use a class level DSL instead of defining the
correctly named method.  This allows defining multiple callback
procs and having them all run.  This is useful when mixins
each add their own callbacks.  Also, with this implementation,
callbacks don't have to worry about `super`ing to make sure all
defined callbacks are run.

Closes #84.

@jcredding ready for review.