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
In my opinion, when the solid parameter is assigned a new object, it won't impact the object that is passed in.
For example, if you have a function:
static void foo(string str)
{
        str = "12345";
}

When the following code is called:
s = "abcde";
foo(s);

s won't change.