[WIP] set mapgen function(s) via json, allow terrain to have a list of possible c++ (50% done), lua(50%), or json-based(75%) mapgen functions.

This will eventually allow drop-in mods to add to a pool of possible variations. Example;
"house" currently has 3 mapgen_function_builtin entries;
```
         "type" : "overmap_terrain",
         "id" : "house", (snip)
        "mapgen": [
            { "type": "builtin", "name": "house_generic_boxy" },
            { "type": "builtin", "name": "house_generic_big_livingroom" },
            { "type": "builtin", "name": "house_generic_center_hallway" }
        ]
```

A mod may add to this:
`{ "type": "json", "object": { bunch-o-json-stuff-here },`
or
`{ "type": "lua", "script": "bunch-o-lua-code-here" },`
 { "type": "lua", "script":
   [ "array", "of", "lines" ]
}
During mapgen, the game picks randomly from the above, for a 1-in-5 chance.

TODO:
* Move mapgen if-else-zomg-stuff into mapgen_function_builtins
* mapgen_draw_lua(...)
* mapgen_draw_json( ...)
* data/mod/whatever.json: "type": "mapgen", "terrains": [ "house", "house_basement" ], "type": "whatever", ....}
The latter should allow uses to throw in any number of hey_look_I_made_a_mapgen_for_whatever_overmap_terrain_type.jsons into the mod directory
* optimize

TODO later
* "weight": 1-1000 * modify chance of roll success
* "unique_name": "something", "unique_max": 1 * for mods that add a single unique type of whatever (this might be better as an oter_t)
* Pass region data to function, when region data is done (ie, this neck of the woods has a spider infestation, or this is a desert so the swimming pool is dried up)


Technical bits:

mapgen_cfunction_map["string"]: map of building_generation.cpp functions, akin to iuse_function_list;
oter_mapgen[oter_id]: stores a...
mapgen_function: virtual base class for:
 mapgen_function_builtin(&ref); stores pointer to a building_generation.cpp function
 mapgen_function_json(str): TODO - just a dummy test now
 mapgen_function_lua(str): DONE. However;
 lua class bindings: 10%