style: Avoid getting zero normalized vector of rotate3d for animations.
style: Avoid getting zero normalized vector of rotate3d for animations.

If we have a rotate axis whose length is extremely large, we will get an
infinite value, and its normalized vector is a zero vector, instead of an
unit vector, i.e. (x/inf, y/inf, z/inf) == (0, 0, 0).

The solution is: we scale the vector, so the length becomes a finite value, and
we could get a valid unit vector.

Therefore, we use a different normalization method, robust_normalize().

Bug: 1467277
Reviewed-by: hiro

nnethercote/servo,ConnorGBrewster/servo,emilio/servo,notriddle/servo,notriddle/servo,szeged/servo,szeged/servo,peterjoel/servo,emilio/servo,KiChjang/servo,sadmansk/servo,pyfisch/servo,peterjoel/servo,notriddle/servo,jimberlage/servo,szeged/servo,paulrouget/servo,emilio/servo,sadmansk/servo,notriddle/servo,notriddle/servo,SimonSapin/servo,peterjoel/servo,KiChjang/servo,pyfisch/servo,SimonSapin/servo,splav/servo,paulrouget/servo,saneyuki/servo,DominoTree/servo,saneyuki/servo,saneyuki/servo,cbrewster/servo,pyfisch/servo,jimberlage/servo,saneyuki/servo,cbrewster/servo,paulrouget/servo,saneyuki/servo,notriddle/servo,pyfisch/servo,ConnorGBrewster/servo,DominoTree/servo,DominoTree/servo,peterjoel/servo,DominoTree/servo,KiChjang/servo,DominoTree/servo,nnethercote/servo,sadmansk/servo,paulrouget/servo,jimberlage/servo,peterjoel/servo,paulrouget/servo,notriddle/servo,emilio/servo,splav/servo,sadmansk/servo,ConnorGBrewster/servo,DominoTree/servo,KiChjang/servo,szeged/servo,paulrouget/servo,jimberlage/servo,paulrouget/servo,peterjoel/servo,peterjoel/servo,dati91/servo,sadmansk/servo,pyfisch/servo,jimberlage/servo,sadmansk/servo,larsbergstrom/servo,emilio/servo,splav/servo,jimberlage/servo,larsbergstrom/servo,saneyuki/servo,cbrewster/servo,dati91/servo,sadmansk/servo,emilio/servo,splav/servo,jimberlage/servo,nnethercote/servo,nnethercote/servo,emilio/servo,pyfisch/servo,dati91/servo,nnethercote/servo,KiChjang/servo,emilio/servo,larsbergstrom/servo,notriddle/servo,dati91/servo,peterjoel/servo,cbrewster/servo,ConnorGBrewster/servo,larsbergstrom/servo,szeged/servo,larsbergstrom/servo,saneyuki/servo,saneyuki/servo,cbrewster/servo,SimonSapin/servo,ConnorGBrewster/servo,SimonSapin/servo,DominoTree/servo,cbrewster/servo,szeged/servo,nnethercote/servo,SimonSapin/servo,peterjoel/servo,ConnorGBrewster/servo,larsbergstrom/servo,larsbergstrom/servo,larsbergstrom/servo,splav/servo,KiChjang/servo,larsbergstrom/servo,larsbergstrom/servo,KiChjang/servo,dati91/servo,splav/servo,ConnorGBrewster/servo,jimberlage/servo,emilio/servo,sadmansk/servo,SimonSapin/servo,pyfisch/servo,pyfisch/servo,saneyuki/servo,paulrouget/servo,notriddle/servo,DominoTree/servo,nnethercote/servo,dati91/servo,nnethercote/servo,paulrouget/servo,dati91/servo,cbrewster/servo,KiChjang/servo,szeged/servo,nnethercote/servo,KiChjang/servo,splav/servo,nnethercote/servo,pyfisch/servo,szeged/servo,KiChjang/servo,DominoTree/servo,SimonSapin/servo,SimonSapin/servo,paulrouget/servo,splav/servo,szeged/servo,peterjoel/servo,splav/servo,saneyuki/servo,emilio/servo,cbrewster/servo,ConnorGBrewster/servo,szeged/servo,notriddle/servo,jimberlage/servo,pyfisch/servo,splav/servo,dati91/servo,DominoTree/servo