This patch begins a set of changes to convert the library to use JSON as
the primary data type used to communicate with users; but for custom user
input and output.
The patch introduces the json.hpp header which is supplied by
https://github.com/nlohmann/json. The header is used unmodified
in the third_party directory. It is installed under the include/benchmark
prefix.
Additionally, this patch adds `Benchmark::WithInput` to allow
the passing of arbitrary JSON as an input argument to a benchmark.
The results of which can be accessed using `State::GetInput()`.
This patch also adds `State::operator[](std::string)`, which allows
users to report arbitrary JSON as output from a benchmark. See
the documentation for examples.