- created abstract base class for Geometry3D
	- this allows both separated and interleaved vertex data derivations
without BaseObject3D knowing or caring about the underlying
representation 	- effort was made to change existing functionality as
little as possible while adding interleaved version 	- impetus for
adding interleaved support, beyond author's own preference, includes a
more flexible vertex data structure with more or less of 	 of the
standard attributes as well as gains in caching on the GPU and easier
and potentially faster bulk updating of vertex data for dynamic meshes

- BufferInfo now contains more information and has a slightly different
relationship to the data 	- BufferInfo now identifies the attribute with
which the data is associated 	- in the interleaved case, BufferInfo
contains information about the attribute offset/size and vertex size for
the GL pointers and stride 		- also for interleaved, the buffer handle
will of course be the same across attributes, but this structure seemed
to make sense to describe 		 the other properties of the attribute

- modified all material classes to make attribute and uniform access
more generic 	- genericized vertex attributes
		- attributes are now stored in a hashmap and looked up by name
			- look-up names are constants which in the author's opinion creates a
little stronger connection between data and shaders 	- genericized
shader uniforms in a similar fashion to above

- removed getVertices() and replaced with calls to getVertexBufferInfo()
as most uses of getVertices() with interleaved data require vertex size
which
 is stored in the BufferInfo

- added ability to ignore indices and just perform a call to
glDrawArrays if no indices present

- added ray-picking
	- added Ray and Intersector classes thanks to libgdx project
	- ray-picking returns a list of objects whose bounding boxes intersect
the pick-ray after a rendered frame

- rewrote code where unnecessary instantiation was occuring as part of
an overall optimization goal of preventing excessive garbage collection
 which can be costly on Android as discussed here:
http://blog.javia.org/android-allocation-free-code-avoids-the-gc-freeze/

- rewrote renderer to not render object if mRenderChildrenAsBatch is
true. This allows a parent to control geometry and material for a batch
as well as
 control over reloading on context loss, without contributing to the
final render itself. Having a group of moving children with a static
parent would
 usually not be desired, but moving the parent affects the
transformation of the children and setting the parent's visibility to
false would also hide
 its children (a useful behavior that should be retained). This avoids
those problems.

- model matrix in RajawaliRenderer was flipping x-coord on translation,
why? 	- required changes in ATransformable3D, BoundingBox,
BoundingSphere, ChaseCamera, Line3D, and possibly more will be found

***** Matrix4
- added val() function to return underlying float array (ie to pass to
Number3D's multiply(float[]))
-

***** Number3D
- replaced instances of FloatMath functions with Math functions as it is
"faster as of API 8" 	- these changes of course necessitated small
changes elsewhere in the code where these functions were used in:

***** Quaternion
- replaced instances of FloatMath functions with Math functions as it is
"faster as of API 8"

***** Camera
- added mUpdateManually flag to allow control over how view matrix is
calculated. If set, updating the view matrix is not calculated on each
call to
 getViewMatrix() and becomes the user's responsibility to call
updateViewMatrix() after making changes to camera properties.