[CR] Add JSON support for overmap specials

Addresses issue https://github.com/CleverRaven/Cataclysm-DDA/issues/7363.

A few bugs remain with this implementation, but right now I don't have the drive to tackle them:
* Road connections don't always line up with actual entrances:
```
 |
wW--
ww
```
I put in code that I thought would deal with it, but it did not work properly with mapgen, so it remains commented out.
* Craters sometimes place over other specials.  This sometimes results in buildings that look like they were built around craters, instead of buildings that got cratered.
* If the game attempts to place two specials of the same type right next to each other, mapgen gets confused and doesn't know which parts belong to which building.  This seems to happen only with the "type_entrance, type" style specials, and could be avoided by converting to a "type_1, type_2, type_3, type_4" style special, with explicit arrangement in the json specification, rather than implicit arrangement coming from relative placement in mapgen.
* Sometimes buildings are placed in areas where road linkage is impossible, such as facing a river.  This is a result of the change below where some places spawn locations were changed.

Also, some of the location types have been changed for some of the specials.  Now, things like megastores and hospitals spawn in "wilderness" instead of "by_hiway".  This increases the chance of getting valid spawns for these types, but increases the chance they spawn in an odd place.