Implementation of breakpoints, with more refactoring.

Breakpoints are disabled in this landing because gdb seems to require
stepi to get around some internally-set breakpoint.  But they work.
There's nothing particularly surprising in the implementation.