Fix failing test cases because some entities are still in use after disposed

<h4>Summary</h4>

Originally in the two functions: InDynamoUnits and InHostUnits, the geometry to be converted will be disposed to prevent them to be disposed in a different thread. But this is causing some issues. Sometimes, when an old geometry is converted, it will be still in use after the conversion.

This submission is making changes not to call dispose on the geometry in the two functions. Instead, dispose will be called in the outside functions properly.

Two helper functions are added for cases where the old geometry need to be disposed: ConvertToHostUnits and ConvertToDynamoUnits. If converted, dispose will be called on these entities. 

The fix is verified on the following test cases:
![image](https://cloud.githubusercontent.com/assets/5584246/5213358/83e3f0aa-7646-11e4-8495-42c8f5e8dbc7.png)


@ke-yu 
PTAL
need different local variable for returned crv. What if we wrap these to some generic method which can be called as var converted = PerformConversion(crv, x => ProtoToRevitCurve.Convert(x), performHostUnitConversion);

public static T PerformConversion<T>(T geometry, Func<T,T> converter, bool unitConversion)
where T : Autodesk.DesignScript.Geometry.Geometry
        {
              var data = geometry;
              if(unitConversion)
                  data = geometry.InDynamoUnits();
               var result = converter(data);
               if(unitConversion)
                  data.Dispose();
+            return result;
+        }