Fix numpad emulation in non-US keyboards

Patch D455 from Benoît Legat with own minor edits.
Speedup track preview widget for byte images

This gives a huge speedup gain for cases when you've got
rather huge markers on a byte images.

Done by skipping IMB_float_from_rect()/IMB_rect_from_float()
for such cases. We can sample the buffers without color space
conversion.
Fix compilation
...and linking, sorry for that!
Dyntopo: Minor display optimization.

While hiding, flush the hidden flags to the faces. This avoids iterating
through all the loops while updating the GPU buffers.
Dyntopo: use hidden face flags in more places
UI: de-duplicate UI_OT_copy_to_selected_button poll/exec
UI: correct own bad use of bool and document area_copy_data args
Support logging of modified faces in dyntopo.

This is meant to support undo when hiding parts of the mesh.
Also avoid rebuilding the PBVH in that case as well (no nodes split)
Change GPU deletion at GPU buffer update time. This should be detected
and done at PBVH update time, since it is possible to have no triangles
to display in a buffer if node is hidden.
Code cleanup: use bool
API Cleanup: Use BKE_constraint prefix for constraint api
Drawing: use const for wire color
Fix for Sinus Displacement and 2D Offset stroke geometry modifiers.

These modifiers were not working properly when they were applied to strokes
whose backbone was already modified by other geometry shaders.  This problem
was due to the use of Normal2DF0D that compute 2D vertex normals based on
the underlying FEdges up on which initial stroke geometry is defined.  Now vertex
normals are computed on the basis of modified stroke vertices.

A helper function 'stroke_normal' for computing normals of stroke vertices was
added to the 'freestyle.utils' API module.
UI: split area_copy_data into ED_area_data_copy, ED_area_data_swap

Was confusing to have swap/copy in the one function.
Fix for Freestyle Python API modules not found in the Python Console.

Addition of the path to the Freestyle Python API modules to 'sys.path' was delayed until
the first Freestyle rendering, so that any import attempt of the modules in the Python
Console always failed.  Now the update of 'sys.path' is done at Blender start-up.
This allows the Freestyle-specific modules to be imported without running Freestyle,
facilitating quick interactive testing in the Console.
Fix compilation error after recent BLF change

FT headers seems to be inconsistent here, FT_KERNING_UNFITTED
is defined as an enum element, but FT_Get_Kerning expects UInt.

Just case for now.
Fix for rigidbody treating the quat as a v3 with pointcache
Math Lib: use less strict epsilon with BLI_ASSERT_UNIT_QUAT

was causing issues with pointcache
Fix T39206: Plane deform works incredibly slow

The issue was caused by the readEWA spending loads of time trying
to sample regions outside of the buffer.Solved by adding an early
exit check.

We could also clamp the sampling region to the rect, but it's
not so much clear whether weight will be correct in such case
so left it for the future.