Work in progress (currently failing miserably)
Okay, finally works... but it's ugly
Cleaned up MockNamedValue and friends to clearly distinguish between input and output parameters
Reverted MockNamedValue method renamings to preserve compatibility
Moved most knowledge of input vs. output parameter types to MockExpectedCall
MockNamedValue now knows nothing about output parameters -- it just has an added size property
Added primitive type inference for output parameters
long experiment.