Proper attributeSize declaration in WebGLRenderers
Supporting updates with BufferGeometry as discussed in #3088

Use

geometry.attributes.index.needsUpdate
geometry.attributes.position.needsUpdate
geometry.attributes.normal.needsUpdate
geometry.attributes.uv.needsUpdate
geometry.attributes.color.needsUpdate
geometry.attributes.custom.needsUpdate

instead of for usual geometries

geometry.verticesNeedUpdate
geometry.elementsNeedUpdate
geometry.uvsNeedUpdate
geometry.normalsNeedUpdate
geometry.colorsNeedUpdate
geometry.tangentsNeedUpdate
Add BufferGeometry + Custom Attributes + Particles example.

This seems to get 15fps faster than the non BufferGeometry counterpart.
Note that buffergeometry.dynamic = true is required for updates
Also cleaned up WebGLRenderer