Cycles Volume Render: add support for overlapping volume objects.

This works pretty much as you would expect, overlapping volume objects gives
a more dense volume. What did change is that world volume shaders are now
active everywhere, they are no longer excluded inside objects.

This may not be desirable and we need to think of better control over this.
In some cases you clearly want it to happen, for example if you are rendering
a fire in a foggy environment. In other cases like the inside of a house you
may not want any fog, but it doesn't seem possible in general for the renderer
to automatically determine what is inside or outside of the house.

This is implemented using a simple fixed size array of shader/object ID pairs,
limited to max 15 overlapping objects. The closures from all shaders are put
into a single closure array, exactly the same as if an add shader was used to
combine them.
Use ccl_device_inline for SSE perlin noise

msvc ignores inline hint here and generates a bunch of push/lea
Cycles Volume Render: add volume emission support.

This is done using the existing Emission node and closure (we may add a volume
emission node, not clear yet if it will be needed).

Volume emission only supports indirect light sampling which means it's not very
efficient to make small or far away bright light sources. Using direct light
sampling and MIS would be tricky and probably won't be added anytime soon. Other
renderers don't support this either as far as I know, lamps and ray visibility
tricks may be used instead.
Fix cycles volume render crash when trying to access primitive attributes
like generated texture coordinates or tangents.
Fix missing check if isect_plane_plane_v3 fails to find an intersection.
Fix for inexact 3d cursor placement especially when zoomed out.

Even with the startup scene clicking multiple times in the corner of the
view without moving the mouse would move the cursor a little each time.
Math Lib: replace point in polygon function with one thats ~23x faster.

rather then using angle summing, use line intersection checks.
Fix for 3d text ctrl+arrow keys failing for multi-byte characters.
Merge branch 'master' of http://git.blender.org/blender