Huge overhaul of the entire MapgenParams system

MapgenParams is no longer a polymorphic class, eliminating the need for messy and bug-prone reallocations.
Separation between the common and mapgen-specific parameters is now strongly defined.
Mapgen parameters objects are now properly encapsulated within the proper subsystems.
Merge commit '5a34f40' into merge2

Conflicts:
	src/emerge.cpp
	src/map.cpp
	src/mapgen_math.cpp
	src/mapgen_math.h