context: Add a context stack API

The current context is now based on a stack model, so clients can
freely push and pop contexts. The current context is the top of
the stack.

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

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.

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

This object serves 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 guint.

Remove the debugging hook with the relevant _remove function.

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.

To prevent clutter, files 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 file to generate coverage reports
for. If paths are specified, then --coverage-output is mandatory in order
to specify a directory to write coverage reports to. In order to handle
writing reports for URIs that GVfs might understand but lcov would not,
we need to copy the covered files into this directory.

Coverage reports are append-only by default. Just remove the report
if you need to zero the counters.

https://bugzilla.gnome.org/show_bug.cgi?id=721246
Generate coverage reports for Gjs

Added the necessary Makefile bits to generate coverage reports
using gcov and also hook up gjs-unit to our own internal coverage
generator and generate coverage reports for our module scripts.

"make lcov" can be used to generate coverage reports.

https://bugzilla.gnome.org/show_bug.cgi?id=721246
ff
ff2
ff3
ff4