Optimisation to rgb <-> hsv/l conversion

Basically avoid redundant computations. Gives ~1-4% speedup in the compositor depending on the use case.

For more info see: http://lolengine.net/blog/2013/01/13/fast-rgb-to-hsv

Reviewers: psy-fi, sergey

Subscribers: campbellbarton

Differential Revision: https://developer.blender.org/D596
Math Lib: rename mul_serie_m3 to mul_m3_series & reorder args

Importantly, reversed mul_serie_m3 argument order (so it matches the m4 function)
GSOC 2013 paint

Yep, at last it's here!

There are a few minor issues remaining but development can go on in
master after discussion at blender institute.

For full list of features see:

http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.72/Painting

Thanks to Sergey and Campbell for the extensive review and to the
countless artists that have given their input and reported issues during
development.
Cleanup
Fix errors in hsv calculation from recent optimization patch.

Code was different from original here, result was apparent in color
picker wedge position.
Bugfix T41133: Audio: Speakers with animated pitch cause clicks in rendered animations, crashes or huge filesizes in rendered audio

Crash happened when the pitch value got <= 0, preventing this now.
Py/API: Improve intersect_line_line with parallel lines

Now comparing the distance between line-intersection points
to see how close lines are - doesn't fail in the parallel case.
Fix T41128: Box selection bug with armatures.

Calling `glLoadName()` was possible with '-1' value (65535 actually), in `draw_pose_bones()`...

Note I think bug exists since ages (at least, seems to be already present in 2008
when drawarmature.c was added in repo)!

Odd behavior reported (issue only affected objects once parented to the armature) was
due to ordering stuff, since only objects drawn *after* the armature were affected.
Fix T40432: Scaling to zero with manipulate center points works precisely on second time

Commented out the 'no zero' protection of scaling transforms for numinput.

Issue is, once an axis has null scale, you can't regrow it from transform code
(you have to directly edit the scale property). This is not ideal, but getting
good behavior in this case is hairy...

Yet, when using numinput, you type precise values, so if you want to set it to zero,
set it to zero. User is assumed responsible, we should avoid too much 'invisible magic'
when handling precise inputs. ;)

Note: an idea for possible future feature would be to have an 'absolute' mode for numinput
(allowing to type in real value, not factors).
Transform: edit to recent commit

Copying long comments about & `#if 0` is hint it could be defined in one place.
initial intersect code
initial isect
intersection script
test vert intersection
check for intersections where no new verts are added first
minor fixes
WIP