Extended and further refactored debug hooks to abstract hphpd features

Summary: This diff is necessary to implement breakpoints and flow control for xdebug.
It is again a large diff, so I apologize for that, but I did split this up
from the next two diffs I am going to send out.

Before, setting breakpoints was possible through the debug hooks, but they
were extremely limited- you could only provide offsets. hphpd implements
a ton of logic in order to implement its different types of exceptions within
this framework. The most difficult type is the line breakpoint as lines span
multiple opcodes and we only want to break on them once.

Now, function entry, function exit, and line breakpoints can be added directly
through `phpAddBreakPointFuncEntry`, `phpAddBreakPointFuncExit`, and
`phpAddBreakPointLine`. The implementation of line breakpoints, though much
simplified, follows the same approach as hphpd.

Ultimately hphpd's breakpoints could be refactored to use this approach, but
for now I've just exposed the approach for other debuggers (namely xdebug) as
I don't think refactoring hphpd would be the best use of time right now.

Reviewed By: @alexmalyshev

Differential Revision: D1494622
Fix too many arguments error to match PHP

Summary: Closes https://github.com/facebook/hhvm/pull/3474

Reviewed By: @ptarjan

Differential Revision: D1500290

Pulled By: svcscm