cleaning up and documenting the router stuff

Separated the implementations into their own package to make docs cleaner.  Added documentation.