Remove global state from Nycr generated parsers

This makes the parsers fully re-entrant. It means that for things like the websockets interfaces the line numbers are accurate even when queries are coming in parallel. 

This also makes it so more than two nycr-generated parsers can be run simultaneously without their errors munging eachother up.

As a side fix, update JHM so that the executable used to run a job's timestamp is used when checking if a run of a job is up to date.

NOTE: When this is merged, developers will need to re-bootstrap their environment (`make clean` followed by `make` is the simplest way)