msvc: Enable GC

Msvc only declares the semi-standard _bss_start and _end variables (for compatibility I guess), but they do not point to the actual bss section used. That is appended to the end of the data section by the linker so it's not possibly to look it up (or I found no way). However putting all statics in a named section and then querying the executable to figure out where the section is, and use that for the GC, seems to work just fine.
Also see #625 - a couple of tests show the behaviour is now roughly the same as gcc builds.
> Had no idea that is the standard way, but isn't it technically still UB as it still breaks strict aliasing, it's just that the compiler doesn't see it anymore? A union on the other hand is part of the standard, sure not used often, but it's C. And correct in this case?

Well, right now I don't remember all the details (had enough multitasking lately), but basic idea is that it's always allowed to case to and from void*, so formally it's not breaking anything. Maybe restrict would be indeed better solution. And union is just *too* verbose, especially if you put it into ifdef.

Coming with a clean patch on your side is probably the quickest way to get this merged still ;-).