perf(client): optimize _matchingTreePath()

fixes #71

- call route.path.match() only once per loop iteration (vs twice
before),
- only sort when needed