Convert save system to json.h.

I might change the `read_into(var)` methods to just `read(var)`, and move them to JsonIn for symmetry with `JsonOut::write()`, but for now it all seems to work.

Some of these commits were broken off and PRd separately. That is, master.gsav fixes, bad float errors, and the itypes extraction from game (necessary to remove *g from all the deserialize methods).

The main thing missing is automatic de/serialization to/from maps. It should be easy to add once the syntax settles down.

For examples of how automatic serialization works for cata data structures, check out https://github.com/yobbobanana/Cataclysm-DDA/commit/ccfcce471b50653369b4b218eee6109102dd8b45 and https://github.com/yobbobanana/Cataclysm-DDA/commit/33c033f70c3d30e4dbcc1d512f1be1519f9b2af9

Those two throw errors on failure (which is by far my preference), but can be easily be changed to fail silently.

Having defined these two methods,( `void serialize(JsonOut &jsout) const;` and `void deserialize(JsonIn &jsin);`,) the JsonSerializer/JsonDeserializer inheritance means they can just be converted directly to/from strings and streams as well. So `fout << p.serialize();` and `p.serialize(fout);` will both automagically work, in addition to `p.serialize(jsout);` (where p is a `point` instance).

So for example, editmap.cpp json editing works just as it did, with a couple less lines.

Mostly savegame_json.cpp works exactly as it did. Failing silently on errors, or popping up debugmsg(). Some of it is a lot tidier because of the new automatic object deserialization.