[lldb] Show a picker in target, thread, frame, and platform select
This patch makes `target select`, `thread select`, `frame select`, and
`platform select` show an `IOHandlerPicker` when they're run without an
index or name and the input is an interactive terminal. The picker starts
on the currently selected target, thread, frame, or platform, and canceling
it fails the command without changing the selection. Without a terminal,
the commands behave as they did before.
The frame picker shows the source of the frame under the cursor below the
list, the way selecting that frame prints it, so `f` still shows where each
frame is.
To support this, a single-select picker now starts with its cursor on the
first item marked `initially_selected`, `IOHandlerPicker` can show a preview
of the item under the cursor, and `IOHandlerPicker::PickOne` runs a
single-select picker and returns the chosen index.
Assisted-by: Claude
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>