Polyfill: fast-path for convex ngons (and mostly convex ngons).

avoid intersection checks where there are no concave coords.
MemArena: use size_t instead of int for alloc args and internal storage.

also add BLI_memarena_calloc to be used when calloc isnt enabled for the arena.
Blender Font (BLF): add length argument to string width/height functions

This also fixes a crash editing buttons longer then UI_MAX_DRAW_STR
User Interface: fix for crash pressing Ctrl+Delete

also remove redundant string duplication.
3D Text: remove 'body' editing from the UI.

This wont preserve newlines, looses materials and is broken in edit-mode.
Fix T37656: Huge amount of RAM used during start when rendering large images

Issue was caused by linear float buffer creating for every working
thread. This buffer actually duplicated original buffer which doubles
amount of required memory.

We can not avoid such a duplication, because OCIO needs to work on a
float buffer and it modifies this buffer.

Alternative for now is to not allocate linear buffer for the whole chunk
which needs to be handled by the thread and use further chunk cutting in
thread itself.

So now every thread will handle the chunk in blocks of 64 scanlines.
This reduces memory overhead significantly without speed loss in own
tests.

Ideally, IMB_processor_apply_threaded need to be switched to generic
task scheduler and made it so this function generates tasks with
reasonable number of scanlines. This requires much more testing to
be sure there're no conflicts with object update and so.

Such a change to IMB_processor_apply_threaded would not be noticed by
users, so do not consider this is a crucial to do right now.
Correct previous commit with BLF & buildinfo
Fix T37671: Edit Texture Space on Skin Resize crash

Texture space editing from TFM_SKIN_RESIZE is not supported,
so hide the option and don't use it for such a transform.
Bevel: add width consistency pass.

When the desired widths (offsets) of beveled edges cannot be
satisfied, often because we want them to meet on an intermediate
non-beveled edge, we need to compromise on the widths somehow.
This code changes the compromise to minimize the sum of squares
of errors in the offsets.  It also adds a global width consistency
pass: starting from a vertex that needed width adjustment, it
uses a breadth-first search to try to propagate the adjustments
and keep the bevel widths from having to taper along the edges.

Also fixed a case where a reflex angle would cause bad results.
Also fixed the way the 'percentage' width method was calculated.