Flip faces (cw/ccw) and/or normals from material

As discussed in #4904, the following flags determines our desired flip method (flipSide parameter in Material):
```
THREE.NoFlip = 0;
THREE.FlipFaces = 1;
THREE.FlipNormals = 2;
THREE.FlipFacesNormals = 3;
```

By default, THREE.NoFlip, considers  material.side === THREE.BackSide, which is the original behavior of three.js. So it won't change the core and only allows developers to flip faces and/or normals in real-time efficiently, regardless of the culling face mode (double/front/back)

one example scene is also included.