Type stable, inferrable 'zero' and 'similar'
The last version disappointingly had few benefits, since function with mixed unit vectors did not have inferrable return types. Type inference times times were slow.
This also introduces some pre-compilation of the extended functions.