Fix T42395: Stored "render data" in particles mismatches the particle
amount and crashes after Cycles render.

This is a hack to fix this, but at this point the system is hopelessly
broken anyway and no good fix other than total rewriting is possible.
UI: let multi-num-drag change different ID values

Handy for property-chart addon.
UI: Fix tooltip text color not resetting correctly

The "Reset to Default Theme" operator didn't reset the tooltip text color correctly.
Fix T42441: Smoke doesn't render in 3DView if domain object's maximum draw type is set to "wire"

Added an exception in convertblender.c's is_object_hidden(), so that an object with active
smoke modifier is never considered hidden.
Fix T42444: Neg scale rotated object flips 2x axis

This is a very old bug and a few attempts have been made to fix it before,
Old code was checking worldspace axis flipping, instead of axis flipping WRT the axis-alignment of the object.
Deduplicate some code by using a function pointer to the real kernel
This has no performance impact what so ever and is already used in the adaptive sampling patch
Fix negate_m3 (taking 4x4 matrix)

Cycles bake used incorrectly.
Fix for mat3_to_rot_size modifying input matrix
Cycles / OSL: Support microfacet() closure color function from OSL 1.5

This is basically just a wrapper class, which maps the generic call from the OSL spec to our closures.

Example usage:

shader microfacet_osl(
    color Color = color(0.8),
    int Distribution = 0,
    normal Normal = N,
    vector Tangent = normalize(dPdu),
    float RoughnessU = 0.0,
    float RoughnessV = 0.0,
    float IOR = 1.4,
    int Refract = 0,
    output closure color BSDF = 0)
{
    if (Distribution == 0)
        BSDF = Color * microfacet("ggx", Normal, Tangent, RoughnessU, RoughnessV, IOR, Refract);
    else
        BSDF = Color * microfacet("beckmann", Normal, Tangent, RoughnessU, RoughnessV, IOR, Refract);
}
Cycles / CUDA: Better fix for missing sm_52 kernel, in case user compiles himself.
Math Lib: add transpose_m3_m3, m3_m4, m4_m4
Transform: snapping: normal-align: Cleanup!

Use BLI's `rotation_between_vecs_to_mat3` helper instead of own custom code,
both simplifies the code and fixes wrong handling when snapped normal was exactly
opposed to org one (i.e. 180° rot case).
Math Lib: pseudoinverse_m4_m4 changed input matrix
color tint