Add support for machine-readable output formats.

SOAAP is now able to output reports in a machine-readable format, with JSON
being the only one currently implemented.

To support this, we have introduced an intermediate layer that abstractly
captures a SOAAP report. SOAAP Analyses build up an abstract report, before one
or more renderers output it in some specified format. Currently, the two output
formats are Console and JSON. Console is the default format that SOAAP has
traditionally been outputting reports in (i.e. akin to compiler warnings).

Currently only vulnerability information is captured in the abstract report,
with everything else being output in the console format as before. Other
aspects of SOAAP's output will be migrated in due course.

To specify an output format, two command-line options have been added:

  -soaap-report-file-prefix=<string>     - Prefix for report-output filenames
  -soaap-report-output-formats=[<list>]  - Comma-separated list of report-output formats
    =console                             -   Console
    =json                                -   JSON

A JSON schema can be found in Report/Render/JSONSchema.json

To support writing JSON files, SOAAP makes use of the rapidjson library. This is
a header-only library with a fairly simple API. It has been added as a git submodule.
To obtain it, do the following after pulling the SOAAP repo:

git submodule init
git submodule update