Working router with tests

* error on duplicated routes
* return nil if route not found
* simplified API
* more tests