Fix T42352.

Add Recalcuate Normals to the Faces menu, next to other shading options.

Differential revision: https://developer.blender.org/D841
Signed-off-by: Thomas Dinges
Checked each of my (jwilkins) XXX notes.

The ones in extern/glew-es have been changed to NOTE instead of XXX

GHOST_ContextEGL.cpp: It really does seem that it is not possible to query the swap interval using EGL

GHOST_WidnowCocoa.h: The comment referring to Carbon is clearly out of date, so I removed it.

math_geom.c: The node about not using tmax again is correct, but the code is kept for a future maintainer who will need to know how to compute it if they modify that code.

paint_image_proj.c (2698): The question about integer truncation does not appear to have been resolved.  It still seems to be an incorrectly implementation of rounding (I'd suggest using the round function instead of this hack).
Cleanup: spelling
Fix T42330 game engine does not allow texture slots generation.
Fix T42354 modal transform map not cycling through local/global
orientation properly

Patch by Phillip Oeser, thanks!
OSX: move notification into its own function
OSX/GHOST: some cleanups
OSX/GHOST: more little cleanups
Fix T42351: Freestyle will not render edges selected by Edge Type: Material Boundary, if the materials are different, but look identical.
Spline IK: use malloc, arrays are filled instantly
Fix T42367: Spline-ik offset evaluating curve
Terminology Trim -> Slip tool. It's how it's mostly called in other
software.
Scons/funstuff: notify when the binaries are compiled
OSX/CLEW: silence hundreds of warnings: 'weak_import' attribute only applies to variables and functions
Fix T42372: demo addon in doc was not handling keymaps correctly during (un)registration.

First, you should unregister in reverse order you registered your operators, keymaps, etc.
Second, when registering keymaps you have to check keyconfigs are actually available (they are not in background mode).
Fix T42393 crash in texture paint sampling in image mode when mesh did
not have a material
Fix assert's, remove uiEndBlock calls
Add Theme Option for UI Emboss

This adds a theme option for the embossing of UI widgets. By doing this users have much greater flexibility for creating nice themes. Previously many themes (particularly dark ones) looked quite bad due to the very obvious emboss. This made simpler, flat-style themes very challenging.

Closes T42228

Reviewed by @campbellbarton
BMesh Py API: Fast index lookups for vert/edge/faces

This changes the Py API to use array lookup table.
Previously this could be very slow since it would loop over all elements.

Now the python script is responsible for creating the internal lookup table (as with C code).

This will break some scripts.
Remove redundant BLI_exists call