watchman: adopt std::string in place of raw pointer in json parser
watchman: adopt std::string in place of raw pointer in json parser

Summary:
this is desirable for a couple of reasons:

* The raw pointer is harder to manage exception safety for
* It is the last use of jsonp_malloc which means that we can subsequently
  remove the custom allocator functionality

This diff replaces the union in the lexer with a plain struct; the union
doesn't buy us much in the context of watchman while also making it harder
to reason about how things are cleaned up in the destructor.  By switching
to a struct we can remove the custom explicit destructor from the lexer.

Reviewed By: chadaustin

Differential Revision: D17779610

fbshipit-source-id: e36ee88c965cf58aac4a5a901dc0709f3f225701

facebook/watchman,nodakai/watchman,nodakai/watchman,nodakai/watchman,facebook/watchman,nodakai/watchman,nodakai/watchman,facebook/watchman,facebook/watchman,nodakai/watchman,facebook/watchman,facebook/watchman,nodakai/watchman,facebook/watchman,nodakai/watchman,nodakai/watchman,facebook/watchman,facebook/watchman