Added input/output parameter support

@basvodde Sorry Bas, this is big, but most of the changes are due to renaming.

The changes include:
+ Renamed input parameter functions on MockNamedValule to include "Input" in the name (since the output functions did)
+ Changed expectation methods to include "Input" in the name (ie: hasParameter(...) => hasInputParameter(...)) since the output versions specified output
+ Changed input expectation methods to explicitly check for input parameters (vs. output parameters) -- this is what allows an input and an output parameter to have the same name
Actual important changes