Utility script to create release archive

- only include files known to git.
- includes all submodules.
- version extracted from BKE_blender.h for naming.
- MD5 checksum generated.
- 'make tbz' convenience target.

Script by Dan McGrath with own minor edits.
Cleanup: sync map_to_sphere, UNLIKELY xy zero case
Fix last commit, making archive from source dir
Math Lib: add mul_v3_project_m4_v3
Fix T41842: Knife edge-snap, incorrect offset
Cycle: Add a bit of explanation why we're using such a dirty hack
Fix T41818: Missing refresh on Undo for nodes (mask example)

Added a special notifier now NC_WM|ND_UNDO in order to deal with such cases
and now compositor/image will refresh when undo happens.

There are much more ways to fail compo to update the resul, like undoing
while it's not visible and so, but as mont29 said -- let's at least fix
obvious crap in the workflow.
Fix T41843: World preview not updating when changing world.

NC_SCENE | ND_WORLD was not handled by buttons space...
Fix part of T41739: Solid 3DView not updating when enabling/disabling nodal material.

There are other similar update issues with mat nodes and solid 3DView, but need agreement
on proposed patch from other devs in this area first!
Math Lib: use higher precision for vector printing

Only use for debugging, where precision is often important.
Fix T41849: Knife fails with small lens

knife cursor depth could be projected behind the view with a wide angle lens.
Fix T41850: Knife fails with mesh behind view

Was using first vertex for depth (which could be anywhere),
now use the view-pivot.

was also copying uninitialized vector into knife_find_closest_* return values (confused debugging).
Fix T41840: bpy.context.object.collision.thickness_inner has no effect on cloth.

Only change the tip to stress that, in fact, cloth sim does not use inner thickness at all,
only outer one, through the Collision modifier, afaik.
Fix T41851: Useless ID selector UI element for sequencer's Sound strips

Currently, this pointer prop is not editable, and making it so does not seem
to be trivial (sound strip seems to use the filepath path, not the soundID pointer?),
so just hide the matching UI item.
Cleanup: set var static
Cleanup: de-duplicate text select logic
Cleanup: bool