Support shared library usage

Also cleanup residual code used only in (now deprecated) header-only
builds, and start moving code from headers to source files.
Fix cloning and move more code into source files

Make a protected, virtual __clone() method allowing safe cloning of
Object3D derivations.  Note that not all types yet properly implement
the clone.  Also continue consolidating math code for improved compile
times.
Preliminary support for final keyword

Add THREE_FINAL support to a few common virtual method implementations.