Brick inputs and outputs are tagged with an application call

The application call can be used to e.g. include auxiliary variables, such as monitors, extra cost terms etc.

Also: fixes to graph parsing.
To prevent hard-coding 'monitor' in multiple places I think we need to have constants like `MONITOR_ROLE='monitor'`. The same for 'additional_cost'.