Add generic support for parameter overrides

One major feature of PlanOut is that it simplifies testing by allowing users to keep certain parameters fixed, through a feature known as "overrides".

This pull request bring full support for overrides to the open-source PlanOut release, including support for the Assignment, Experiment, and Interpreter objects.  When overrides are used in conjunction with the interpreter, the right-hand side is evaluated lazily, allowing developers to "mock" particular variables or checks (that may rely on other services).

Test plan: All changes have unit tests to demonstrate the expected behavior. All other unit tests pass.