Improved handling of identically-named formula parameters.

Hi everyone,

@mhiley pointed out to me that if a parameter name is shared by more than one formula, the user input written out to `operandcache.xml` will be associated with every parameter using that name.

This is due to the way the operand cache key is constructed. Currently, it uses the following:

```cache[(parameter_name, parameter_type)] = <VALUE>```

The attached code simply changes the key to this:

```cache[(formula_description, parameter_name, parameter_type)] = <VALUE>```

This was a little problematic in that a `DataOperand` had no way of knowing which formula it is associated with, so I ended up having to modify both `DataOperand` and `DerivedDataChoice`. While all of that should be obvious from the diffs, I wanted to explicitly mention it because I feel like it is a little too fragile…though it has worked fine in my testing.