Cycles Volume Render: heterogeneous (textured) volumes support.

Volumes can now have textured colors and density. There is a Volume Sampling
panel in the Render properties with these settings:

* Step size: distance between volume shader samples when rendering the volume.
  Lower values give more accurate and detailed results but also increased render
  time.
* Max steps: maximum number of steps through the volume before giving up, to
  protect from extremely long render times with big objects or small step sizes.

This is much more compute intensive than homogeneous volume, so when you are not
using a texture you should enable the Homogeneous Volume option in the material
or world for faster rendering.

One important missing feature is that Generated texture coordinates are not yet
working in volumes, and they are the default coordinates for nearly all texture
nodes. So until that works you need to plug in object texture coordinates or a
world space position.

This is work by "storm", Stuart Broadfoot, Thomas Dinges and myself.
Code Cleanup: unused defines & style
Code Cleanup: cycles tips and long lines
Fix for crash with game engines LibLoad feature
Code Cleanup: quiet unused define warning
Main API: refactor naming, use BKE_main_ prefix and add main arg.
Fix T37920: BGE LibLoad failed for meshes with no materials
Node Editor: enable transform helper line
Fix T37970: Node scale/rotate use incorrect pivor

note: added code to use real node center, but ifdef'd for now since it
doesnt work well with absolute snapping.
one more msvc 2013 change
UI: improve tooltip for use preview range option in timeline.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D161
Fix console incorrectly showing on Windows Blender startup in some cases.

The console window is hidden by default, but we need to avoid this when
starting from the command prompt, because it would hide the window you just
typed the command in.

Previously it would check if Blender was started from "explorer.exe" to
determine that, but that wasn't working for application launchers like
Appetizer or Colibri. Instead we now check if the process ID is the same as
the process ID of the console window, which appears to work reliably.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D122
Fix T37947: large cursors now also work on linux/mac for the edit mode cross.
Fix T37935: 3dsmax key configuration broken after recent mesh operator changes.
Fix T37992: german NUMPAD-COMMA is not tranlated to decimal dot (for modal  numinput).
Fix T37994: crash in preview render after recent color management changes.

Reviewed By: brecht
Cycles Volume Render: optimization to avoid exporting surface attributes when
only a volume shader is used.
Cycles Volume Render: generated texture coordinates for volume render.

This does not support staying fixed while the surface deforms, but for static
meshes it should match up with the surface texture coordinates. Implemented
as a matrix transform from objects space to mesh texture space.

Making this work for deforming surfaces would be quite complicated, you might
need something like harmonic coordinates as used in the mesh deform modifier,
probably will not be possible anytime soon.
Cycles Volume Render: these changes should have included in the last commit.
Fix T37993: mass of Rigid Body ignores scene unit scale

Mass units weren't scaled in the ui.