Fix T41457: Viewport resolution divider does freestyle for every resolution

Now freestyle would be rendered for the final resolution only, making it so
viewport navigation is really interactive.
Fix T40962: Ashikhmen Shirley shader fireflies
Roto: Add spline dragging zone in it's center

This dragging zone is visualized as the circle (the same as object origin)
in the spline bounding box center and dragging that circle drags the whole
spline.

Pretty much basic functionality, but quite useful in practice.

Requested by our roto team (Sebastian and Sean :) in IRC.
Replace strstr with STRPREFIX

No need to search the whole string.
Cleanup: style
Fix T41464: Material Boundary bug in Freestyle.

The reported issue was caused by an old bug combined with another bug
introduced by recent Freestyle Python API updates.

The old bug was that a mutable reference to CurvePoint was treated as if
it were immutable.  Iteration over CurvePoint objects is implemented by
the C++ CurvePointIterator class, whose dereference method
CurvePointIterator::operator*() returns a reference to a mutable data
member (probably originally intended for better performance).  Hence the
returned reference may vary upon iteration over different CurvePoints.
This implementation detail was overlooked and the returned reference was
treated as immutable (which is the case in fact for other Interface0D
subclasses except for CurvePoint).  This bug was surprisingly old as it
existed before the beginning of Freestyle integration into Blender.

The other bug was in the MaterialBoundaryUP0D predicate class that was
not properly handling the end of iteration.  It is noted that when the
iter() and next() built-in functions are applied to Interface0DIterator,
it is no longer possible to reliably check the end of iteration by the
.is_end property of the iterator.  Namely, the .is_end property works as
expected only when iteration is carried out in combination with the
conventional .increment() and .decrement() methods of the iterator.  For
this reason the commit rBb408d8af31c9 was partly reverted to recover the
previous definition of MaterialBoundaryUP0D.
BMesh: improve docs for BM_edge_split
Correct mistake in recently added intersect tool

Sorting verts along an edge wasn't working reliably.
Fix for missing updates of build scripts in the commit rB05cb63ecf750.
Adding presets for Blackmagic Pocket Cinema Camera and Blackmagic Production Camera 4K
Fix T41499: Can't use Deselect/Select All tool while in Texture Paint mode
Viewport resolution divider works fine for halos now
Fix T38722: Adding units in Imperial setting results in inconsistent values

Now always check for a default unit, and evaluate the whole expression in this "unit space".
Not an ideal solution, but should handle most cases nicely
(we can't address all possible corner cases anyway).

Note default unit is searched in current string first (bigger unit of current system wins),
then in previous string.

Note this also replaces ',' by '+' in default separation between units,
helps solving issues with parenthesis (e.g. (1'1")*2.5 would fail in existing code)!
This would break if someone uses py ops with lower precedence than '+' (like bitwise
operations, and comparison), but these are not expected usecase here anyway.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D340
BKE_units: Some cleanup (mostly bools instead of ints).
Fix for recent solidify rim-only patch
Tweaks to the 3ds and maya keymaps

- Get rid of the obsolete operator
- Use select_or_deselect_all in 3ds keymap, which performs better
  than separate deselect all and select binded to the select mouse.

  This was already done for maya, and seems was accidentally reverted
  by 5a91db3d.
Fix T41497: Colour Ramp UI Bug.
Restore red name for disabled modifiers.

Don't know when this was lost, 2.70a already did not have it... :/
Cleanup: some const and bool cleanup.
Fullscreen Editor (new fullscreen mode for clean UI)

Organize Maximize/Fullscreen mess and add a new fullscreen mode with no UI

* Maximize Editor: (old Ctrl+Up)
* Full Screen Window: (old Alt + F11)
* Full Screen Editor: new operator (Alt + F10)

It should fullscreen the window and make it clean (no UI, no buttons).
After exiting it, it should return to the previous window state
(windowed/fullscreen).

This was originally intended for the multiview branch, but this
functionality also benefits non-stereo workflows, thus it can be
reviewed and committed independently.

Development notes:
* This includes cleanups in the code to sanitize the naming of
  fullscreen/maximize across the window/editor code.

* This includes a hack for OSX due to a bug explained in D677
 (Thank for Jens Verwiebe help into finding this)

@brecht, @fsiddi, this is based on the discussion we had last year (after bconf), so I'm assigning you both as reviewers since we should be on the same page and you know more about the needs of this features than anyone else
@ton, adding you here as well, since you were one of the advocates of having this mode designed for Blender as a whole, not only multiview.(and because the OSX hack is required probably because of your recent fullscreen implementation for OSX, so you may be interested in looking at that.

Cheers!

Reviewers: brecht, ton, fsiddi, campbellbarton

Subscribers: aditiapratama, venomgfx, wsmeador, eibriel, lockal, Lapineige, ton, brecht, fsiddi, jensverwiebe

Differential Revision: https://developer.blender.org/D678