Dependency updates and better JSON errors
Along with general clean up of the codebase and updates to the dependencies, this moves to using parse-json instead of JSON.parse in order to provide better errors in the event something is wrong with a provided JSON file.