Unification of Element GeometryObject extraction (round 2)

### Fixes (round 1)

There were a number of out of date methods for extracting Geometry from Revit Elements in `Element`. I've removed the outdated ones. Now there is only one - `InternalGeometry`. Notably, this also fixes the issue encountered in #2487, as this method correctly translates instance geometry. It also obviously eases maintainability as there is only one code path to maintain.

### Fixes (round 2)

In round 1, I did not realized `Element.Faces` and `Element.FaceReferences` required breaking apart Solids.  This should have been obvious, but I didn't look closely at the implementation of `InternalGeometry()`.  This is now fixed.  I added more unit tests in `ElementTests` and ran many pertinent tests to confirm the fix:

![donetests](https://cloud.githubusercontent.com/assets/916345/4619099/1759ffc2-5311-11e4-9305-e3a50f1ec2c6.PNG)

I also discovered another bug.  The bug is encountered when extracting geometry from a `Autodesk.Revit.DB.GeometryInstance`.  The `Reference` objects obtained are incorrect as I used `GetInstanceGeometry()`.  You must use `GeometryInstance.GetSymbolGeometry()` with no transform in order to obtain the correct `Reference` objects.  This requires two traversals of geometry containing `GeometryInstances`.  This was totally unknown to me before.

### Tweaks

#### AssemblyInfo.cs for RevitNodes

I've also tweaked the AssemblyInfo file for RevitNodes so it exposes it's internals to RevitNodesTests. This allows me to remove the attribute from InternalGeometry and correctly set this method as internal.

#### Documentation

I've added new (trivial, but needed) documentation for these methods.

#### Tests

There is a new unit test for #2487 in RevitNodesTests.

### Reviewer

@Randy-Ma
I have not seen the difference of the new parameter. What is the different between getting it earlier and later? I am seeing they are both using the same API to get the reference from faces.