ClientRouter rework + client tests #wip

Closes #2
Reworked client router for new controller API

* client tests basically complete. Closes #5
* rework closes #8