Global parameters can be overridden when instantiating a task

Also removed a couple of ways global parameters are special. The only feature separating global variables is now that they can be set on the command line for all tasks. But other than that, global parameters behaves like any other parameter.

There was also some issues with leaky state from one test to another - interface_test.py was leaking a mocked no_lock=True parameter which parameter_test.py was relying on. Removed the leak and added --no-lock everywhere in parameter_test.py