Added GjsReflectedScript and GjsReflectedExecutableScript.

GjsReflectedScript contains some useful information about a
script, including an array with all available function names,
array of all branches and an array of all executable lines.

GjsReflectedExecutableScript is an implementation of the former
which can be updated as-needs-be at runtime (while new executable
lines are added).
Added GjsDebugHooks interface and GjsMultiplexedDebugHooks object.

This interface (and object) serve as a central point for clients to connect
to SpiderMonkey's internal debugging functions without stepping on each other.

Through GjsDebugHooks, clients are able to connect to the general
execution hooks (such as entry and exit of new functions and source files),
enable single-step mode and recieve interrupts and add arbitrary breakpoints
on source files.

Each of these functions takes a callback and returns a GjsDebugConnection.

This object is effectively just a handle for an active connection to the
debugging interface. Once clients are done with a particular debugging hook
they should unref their connection. This will automatically call back into
the interrupt register's implementation and handle the proper tear down
of that hook inside of SpiderMonkey if required.

https://bugzilla.gnome.org/show_bug.cgi?id=721246
Integrate GjsProfiler with GjsInterruptRegister.

GjsProfiler now takes a strong reference to GjsInterruptRegister and
uses its function calls and execution hook in order to gather profiling
info instead of using SpiderMonkey's debugging API directly

https://bugzilla.gnome.org/show_bug.cgi?id=721246
Added GjsCoverage object (and thus code coverage support).

This object effectively just takes a connection to the single step
handler and records how many times we hit each line. It then provides
a function to write this data out to a GFile, or if the GFile provided is
NULL, writes to $(file).js.info.

To prevent clutter, paths considered to be part of the coverage report
must be specified inclusively, anything not part of those paths will not
be included in the coverage report.

The coverage tool is integrated in to gjs-console, you can use it by
specifying -C or --coverage-path to add a path to generate coverage reports
for and using --coverage-output to write coverage data to a single file.

Pass --accumulate-coverage if you want coverage data to be appended
to the same file. This is useful for some test runners.

https://bugzilla.gnome.org/show_bug.cgi?id=721246