code: function on (route, fn) {
      assert.equal(typeof route, 'string')
      assert.equal(typeof fn, 'function')
  
      var cb = fn._wayfarer && fn._trie ? fn : proxy
      route = route || '/'
      cb.route = route
  
      if (cb._wayfarer && cb._trie) {
        _trie.mount(route, cb._trie.trie)
      } else {
        var node = _trie.create(route)
        node.cb = cb
      }
  
      return emit
  
      function proxy () {
        return fn.apply(this, Array.prototype.slice.call(arguments))
      }
    }
docs: define a route (str, fn) -> obj