Refactor how controllers are checked.

- Unify in a central place controller checks.

- Busy controllers are detected at the earliest possible moment.

- Pave the way for incorporating motion planning. Without this changeset,
  we risked computing approach plans even when play_motion is busy executing
  executing a motion. Not good.