Better handling of selection. (revert a bunch of stuff).

Revert "minor "bug" fix"
This reverts commit a3b15dfa6cc8044c60ac1e07f0c7d4d63694c603.

Revert "Always select current candidate, even if input is empty."
This reverts commit 514c940204fc8d2e5dedc0127ca8c750ebf42978.
Remove [Sources.with_subcommands], rename [program] to [state_machine].
Update examples accordingly.

The name "state_machine" doesn't have to be definitive choice, "engine" could be
nicer, any input?
update doc for [Dmlenu.run]