If an injected devtools function doesn't have a refreshInterval, it should only be run once, so the frame change handler will ignore it for frame startup/teardown.
Allow the addBreakpoint() flow between devtools and injected functions to take the ID of a previously-known breakpoint, and don't re-add breakpoints that are already in the list by ID (but update their properties).
Two major focuses of this PR:
If an injected devtools function doesn't have a refreshInterval, it should only be run once, so the frame change handler will ignore it for frame startup/teardown.
Allow the addBreakpoint() flow between devtools and injected functions to take the ID of a previously-known breakpoint, and don't re-add breakpoints that are already in the list by ID (but update their properties).
Fixes #90.