[debugger] Separate out physical frame finishing.

Inline frame finishing and physical frame finishing are very different.
This renames the existing FinishThreadController to
FinishPhysicalFrameThreadController and explicitly handle only physical
frames.

The FinishThreadController now handles dispatching to this function as
well as a "step over" controller depending on what combination of frames
need to be stepped out of in the requested case.

Some complexity is removed from the finish controller around
asynchronously fetching frame fingerprints. The new code assumes that
the stack will not change between creating the controller and the
initial call to InitWithThread(). This is currently always the case, and
some checking code is added to validate that this stays true in the
future (it tracks the "frame_ip_" of the requested index). This chan ge
allows the frame index to step out of can be stored and simplifies the
code.

The new FinishThreadController code doesn't currently work correctly for
inline frames. To keep things reviewable, this is a checkpoint and I
will work on correctness and a test to go with the fixes in a followup.
Since inline frame finishing doesn't work at all, this is not a
regression.

TEST=none, not working yet

Change-Id: I204f85ef0a2966a5da156dfb775356edaad2f907
8 files changed