cleanup the old `class << self` method of adding context DSL methods

This is a legacy way of adding class methods.  Updated to define
"dsl modules" and extend them onto the class.  This also breaks up
the dsl methods from the main context definition and organizes the
context source files more like the tests were organized.

Overall, this is just a cleanup/reorg - no behavior changes.

Closes #162.

@jcredding ready for review.