Refactoring router.go to handle errors. Improving code coverage.

Refactoring router.go to handle errors. Improving code coverage.
This interface's methods should really not return a Routes at all.