build routers with a dsl-block

This updates the router class so that you can create and configuring
it by passing a configuration block.  This block will be instance
eval'd on the router.

This adds no behavior changes, just allows for syntactical sugar
when defining routers.

@jcredding ready for review.