Debugger: Add/handle new suspend state for jobs.

- In addition to waiting for one or more dependent jobs to complete,
a job can now potentially wait for user input to proceed further. Add
a corresponding job_wait_status and respective handling in Worker.
Debugger: Add classes for representing image loading state.

Adds a hierarchy of classes for preserving the loading state information for
a LoadImageDebugInfoJob. These include:
	- ImageDebugInfoLoadingState:
		Top level class that simply stores a reference for  the specific info
		state that we're currently attempting to load.

	- SpecificImageDebugInfoLoadingState:
		Abstract base class representing state information specific to a
		particular kind of debug information.

	- DwarfImageDebugInfoLoadingState:
		Implementation of the above for the case of DWARF.

	- DwarfFileLoadingState:
		Encapsulates the in-progress loading state of a DWARF file for the case
		where a file's debug information is referenced externally, but cannot
		be found.
Debugger: Add support for suspending LoadImageDebugInfoJob.

DwarfFile:
- Loading is now split into two steps, the first of which simply attempts to
verify the presence of debug information. If the latter is referenced
externally, but cannot be found on disk, the corresponding file reference is
returned.

TeamDebugInfo:
- Add state parameter to LoadImageDebugInfo(). Use it to preserve where we
are in the specific info loading loop if necessary.

SpecificTeamDebugInfo:
- Add parameter to CreateImageDebugInfo() to allow passing in a state object
and adjust implementing subclasses accordingly.

DwarfTeamDebugInfo:
- Preserve and/or pass down DwarfFile's loading state as needed.

DwarfManager:
- When attempting to load a DwarfFile, detect the case where external debug
  information is referenced, but could not be located. If so, preserve the
  relevant details in the loading state, so the user can be notified and
  asked to find it accordingly.

LoadImageDebugInfoJob:
- Keep a state object for the progress of the current loading job. If a
  particular image fails due to needing user input, suspend ourselves
  until such input has been provided.
Debugger: Add file prompt hook to UserInterface.

In some circumstances, it may be necessary to ask the user to locate a file
from the lower layers. Adds the corresponding hook to UserInterface, and a
stub implementation for CommandLineUserInterface.

Adds full implementation for GraphicalUserInterface.
Debugger: Start adding the groundwork for load state handlers.

Adds abstract class ImageDebugLoadingStateHandler which simply contains two
hooks, which allow one to a) ask it if it supports a handling a particular
type of loading state, and b) if so, ask it to attempt to handle that case,
given the passed in user interface object.

Also adds implementing subclass for DwarfImageDebugInfo, currently
intended primarily to handle the case of missing external debug information.
At present, this just supports prompting the user to find/install the file,
but eventually this will be extended to also support automatically installing
the corresponding debug information package, if applicable.

Finally, adds ImageDebugLoadingStateHandlerRoster, which acts as a front end
for matching up a given loading state with the appropriate handler.
Debugger: Finish handling of missing debug information.

Add a listener interface for LoadImageDebugInfoJob that allows it to request
user assistance based on its current state. Adjust callers to pass in said
listener accordingly.

Implement the aforementioned listener interface in TeamDebugger, and use the
loading state handler roster to find the appropriate handler / handle the request.

This implements most of what's needed for #10138, the main piece still missing
is for the dwarf handler to detect whether the image in question comes from a package,
and if so, to offer to install the corresponding debug information package rather than
locating the file manually, assuming such a package exists.