Solidify Modifier "Rim Only" Option

D737 by scorpion81 with own edits
Revert "Fix T41222 Blender gives weird output when baking (4096*4096) resolution on GPU"

This reverts commit a48b372b04421b00644a0660bfdf42229b5ffceb.

Leaving only the part that fix device_multi.cpp
Final Fix T41222 Blender gives weird ouput when baking (4096*4096) resolution on GPU

It now uses the tile size to split the job. For CPU this may add
overhead, but for GPU this is highly needed.

Reviewers: sergey

Differential Revision: https://developer.blender.org/D690
Correction to last commit, rna naming
Fix uninitialized imagepaint values on new scene, report by kopias on
irc
Cleanup
Fix T41427: Region overlap moves into wrong window.

There was some fuzzyness in `region_overlap_fix()`, using an 'other side' region
as ref to move current one in case their rect would intersect...

New code is a bit more complex, but should handle nicely all situations, mostly
ensuring we only translate an overlap if we find a previous one **on the same side**,
and ensuring we also never have intersecting overlapping regions from different sides
(since this does not work nice at all).
Fix compilation on linux (implicit conversion from double/float to size_t treated as error here).
Fix T41421

Don't store selection properties, if those are set in the keymap we can
end uo locking one state forever.
Fix T41454: Command "Dirty Vertex Colors" prompts Python error.
Comments
Math Lib: add isect_line_line_epsilon_v3
Fix filenames in splashscreen.

For some reason, labels of buttons in popups/menus were clipped left.

Removed that function (was the only place were it was used), clipping text
by its left is really bad for its understanding!

Instead, extended clip_middle code so that it optionnally preserves a right piece of
the given string (like the shortcut part of a menu label). Think that's what makes
more sense here (note that most menus adapt themselves to their longest item,
we do not have much fixed-width ones, anyway).

Also tweaked a bit clip_middle logic, so that left part always have at least ten chars
(in addition to already existing 'min width' checks).
Fix poll func of CYCLES_OT_use_shading_nodes.

Operators' poll func might be called from anywhere in Blender, so they should
not make any assumption about available context. material, lamp and world
are specific to context from Properties space...
Math Lib: replace epsilon with check against zero

line-tri intersection depended on scale, The check made small triangles & lines fail.
So just check for divide by zero as ray-cast currently does.
Cleanup
Knife tool: simplify hit-depth calculation
BLI_array: utility function for searching an array
Fix T41467: Modifier view buttons changing positions.

Commits early in this year (to save some space) broke this. Hopefully this time
it works in all cases - lastCageIndex is no more influenced by realtime/edit active states.
Also, inactivate buttons instead of hiding them, can be useful to set those data
even though it does not have any immediate effect.

Took the opportunity to switch cage buttons to RNA, btw.
BMesh: add BM_vert_splice_check_double

checks if splicing verts creates duplicate edges