Multi output op evaluation2

@andrewmacp, @helgemathee  : Can you take some time to look through my changes. 

I've tried to keep the changes to a minimum. 
Here is an overview of the problem
1. Softimage evaluates an operator for every connected output(yes, I know, stupid!)
2. Softimage may not evaluate all connected output ports. (if something is hidden for example)
3. Softimage will evaluate the outputs in a random order. 
4. Softimage provides almost no way to know if an input has changed.'

Solution
1. Use 'GetEvaluationID' to track changes in geometries and ICE attributes. 
2. use a values cache to track changes in simple values. 
3. use our own RTVals to compare and check for changes in Matricies. 
4. update the EvalConstex when a value changes. 
5. Only transfer data that has actually changed.