Add emerge.cpp, initial EmergeThread changes

- Neatly placed all emerge related code into a new file, emerge.cpp
- Greatly cleaned up the code in EmergeThread::Thread()
- Reworked Emerge queue.  Now an actual std::queue of v3s16 block positions
- Removed the completely unnecessary map of peer ids requesting blocks
Add global and per-peer queue limits
Fix EmergeThread hang on exit
Add emerge queue limit configuration
Add multi-Emerge thread support
Misc. cleanup and minor fixes
Tune queue limits, some other adjustments
Fix most walled-off caves
Fix build on Windows
Fix selection of # threads, set default to 1 thread
Remove dead code, relocate some code