Compiler frontend changes!

The goal of these changes is to provide an easy infrastructure to remove some IF1 semantics from IGR.
For now, only the call node uses the new structure (which already made the frontend prettier).

The main idea is that every IF1 node is conveted to an operation node. An additional IGR pass after the
parsing phase now converts some of these nodes to different nodes. This can also adjust some operations
(e.g. the array indicing difference)

- Adjusted the operations to return a string version of every operation
- Adjusted the graph and edge parsing modules to no longer treat call as a special case
- Added a converter, which for now only modifies the call operation to be a valid call node
- Adjusted the frontend to call the converter

- IGR Callnodes no longer have a bind function, instead the function name is directly added
  when initializing
- IGR subgraphs have some extra operations to replace and delete nodes