Fix MSVC warnings, win64 bug

- Use qSort and function pointer instead of struct operators and std::sort
  to appease MSVC.

- Simplify DFInstanceWindows::map_virtual_memory loop

- Store real base address offset instead of reading 0x400000 from PE
  header.
Is this intentional?

If so, this is one of two uses of the memory segments in m_regions. The other is used when scanning memory, which is virtually obsolete with df-structures and useless for a regular player.

So if we're not going to bother validating addresses, and the scanner is outdated, then map_virtual_memory won't be used anywhere and all the related scanner / virtual mem reading code can be removed entirely.