Extensive improvements to SIMD implementation

Make extensive changes to SIMD implementation, with autodetection and
advanced configuration possibilities with a high degree of optmization.
Seperate versions of SIMD-accelerated functions are compiled for each
support SIMD extension combination.

When SIMD support is autodetected, function pointers are used and the
SIMD type can be freely changed. When the library is compiled with
a hardwired level of SIMD support (for example, just SSE2, a more
advanced SIMD level like AVX, or no SIMD support), direct function
calls are used, avoiding the performance overhead of function
pointers.

This is work in progress. Some of the dot product functions still
have to be rewritten for float pointers instead of Vector3D-type
pointers.

Also remove mutex in dstThreadedTimeout::StopSingalled().

Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>