Continued ClientNode and REPL development (#1308)
* Continued ClientNode and REPL development
This builds out the controller for the node API to the point where I need to address a conflict between
InteractionClient and InteractionServer.
Adds:
* ControllerBehavior - initializes the node environment to act as a controller and tracks active discoveries
* Discovery - a set of classes that manage discovery of commissionable devices
* CommissioningClient - a behavior that handles commissioning and related metadata management
Fleshes out ClientNode related API. Persistence and management of known nodes work now.
Also includes continued development on the "cli tool" REPL including numerous quality of life and aesthetic
improvements.
* Address PR feedback
* Fix discovery cancelation + node hygiene
* Cancelation previously left the timeout timer dangling; fixed
* Added methods on endpoints to "erase" (clear persisted state) and "delete" (erase + close)
* Modified server addresses to include optional "discovery time" and ttl
* Modified ClientNodes to prune addresses and commissionable nodes that expire
* Make Time.sleep cancelable
Adds a few new public APIs but otherwise this is only used by new (under development) codepaths.