Simpler bloom implementation.

Now uses several draw calls, instead of one big draw call with lots of
texture samplers.  Should be kinder to certain drivers which want to
drop to software implementations when there are too many texture
samplers in a single shader.  (To be verified)
Updated maths from OpenGL3 branch.

Most notably, more information from line segment distance calculation
(including the actual closest points), and better behaviour (i.e.:
less crashy) when those lines are parallel.

Also adds "NormaliseSafe()" convenience functions to the vsVector
classes.  Unlike Normalise(), these don't generate NANs on zero-vectors.
Port of vsLines3D from the OpenGL 3 work.

Triangulates lines to a client-set width.  Should do something like this
for 2D lines as well.  Need to work out the proper interface for that,
though;  maybe such 2D lines don't need to recalculate all the time the
way that 3D ones do (due to the presumed ortho projection matrix used to
render 2D lines)