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
Cleanup: assert / warn
BMesh: intersect tool

Modeling tool to cut intersections into geometry (like boolean, without calculating inside/outside).
Faces are split along intersections, leaving new edges selected.

Access from Face menu.
Fix T41314: OpenGL error when using Cycles engine
Fix for line style shader/texture types showing up in the node editor when Freestyle is disabled at compile time.

Problem report by Thomas Dinges on IRC, thanks!
Fix T41085: Blender crashes when using "spline" or "segments" for bevel curve factor.

Root of the issue goes to the fact that bevel list calculation might drop some points
if they're at the same position. This made spline length calculation goes wrong.

Now the length of the bevel segments is stored in the bevel list, so values are
always reliable.

Initial patch by Lukas Treyer with some tweaks from me.
Correction to the mipmaps generation

Seem we've always were wrong with multiplying alpha by 255,
other channels seems to be multiplied by 256 with the shift
operations.