Implement proper font handling
Scale form elements consistently

The ratios between the sizes of form elements, including text, is now
fixed, aside from variations caused by rounding.  This makes form layout
almost fully predictable, and particularly independent of player's
screen size.  The proportions of non-text elements are the traditional
proportions.

For compatibility, the way in which element positions and sizes are
specified remains unchanged, in all its baroqueness, with one exception.
The exception is that the position of a label[] element is now defined
in terms of the vertically center of the first line of the label,
rather than the bottom of the first line of the label.  This change
allows a label to be precisely aligned with button text or an edit box,
which are positioned in a centering manner.  Label positioning remains
consistent with the previous system, just more precisely defined.

Make multi-line label[] elements work properly.  Previously the code set
a bounding rectangle assuming that there would be only a single line,
and as a result a multi-line label would be cut somewhere in the middle
of the second line.  Now multi-line labels not only work, but have
guaranteed line spacing relative to inventory slots, to aid alignment.

Incidentally fix tabheader[] elements which were being constrained to
the wrong width.

Given an unusually large form, in variable-size mode, the form rendering
system now chooses a scale that will fit the entire form on the screen,
if that doesn't make elements too small.  Fixed-size forms, including the
main menu, are have their sizes fixed in inch terms.  The fixed size for
fixed-size forms and the preferred and minimum sizes for variable-size
forms all scale according to the gui_scaling parameter.
Make hud use fontengine too
Fix non coding style conforming glb_fontengine to g_fontengine
Fix fonts never been deleted due to grabbed to often
settings: Add setting groups and multiline entries
Fix segfault at exit caused by non grabbed font
LuaSettings: Sanitize setting name strings
Fix build
Note: this does not fix the warnings generated by clang
Fix node 0,0,0 being highlighted when enable_node_highlighting == false

Without this patch node 0,0,0 is highlighted when enable_node_highligting is false
There is a minor lighting issue remaining, however it seems to be related to a different bug (https://github.com/minetest/minetest/issues/1887)
Fix settings callback "call" lost on rebase
Add fontengine.cpp to Android.mk
Fix style of comment in minetest.conf.example
Use setting groups for NoiseParams

Add format example to minetest.conf.example
Add Settings::setU16()
Throw exception on attempted access of NULL settings groups
Settings: Fix getNoiseParamsFromValue()
Add definable node_stone to biome API, mgv5, mgv7. Reduce and correct depth of mgv7 biomes. l_mapgen.cpp: add '#include mapgen_v5.h' because '#include mapgen_v7' is there. Improve underwater grass hack
Settings: Various setting group fixes and enhancements

 - Remove blank setting values when setting has a group
 - Pair setting values with groups in file when possible
 - Preserve user-set whitespace in setting objects
 - Delete setting value when setting NoiseParams group
 - Delete overwritten groups outside of lock
Make dropped items larger and rotate faster

Signed-off-by: Craig Robbins <kde.psych@gmail.com>
Right mouse button behaviour for craft/inventory If right mousebutton clicked once then don't drop single items into slots. If right mouse button has been clicked and held a second time, drop items as the mouse is moved. In the second case (automatically drop/place items as mouse is moved) only auto-drop into blank slots, or slots that contain the same item.
Optimise VoxelManipulator::copyFrom

~3-4x faster

This indirectly optimises MapBlock:copyTo() which in turn improves performance of MeshMakeData::fill()
(INTERIM) Make sizes of the font in formspecs consistent and not so large

Until a permanent fix can be developed
Merge commit '39162de' into stable

Conflicts:
	src/defaultsettings.cpp
	src/game.cpp
	src/guiChatConsole.cpp
	src/guiEngine.cpp
	src/main.cpp
	src/settings.cpp
	src/settings.h