Changes to literals and traversals

- Traversals now operate over a copy of IGR, making removing nodes easier
- Changed literals for this
- Subgraphs now store if they are trivial
- trivial function subgraphs are now automatically removed from the program
- Added a function to IGR to remove subgraphs
Changed some examples, also recompile all examples to IF1
Fixed a small naming bug
Added literal->constant compilation

- Added constant node
- Added a field to subgraphs to check if a subgraph is a function
- Added a function to convert a constant node
- Added some extra documentation to make some stuff more clear (almost as clear as this bullet)
- A trivial function subgraph is now removed
- A trivial compoudn subgraph is reduced to a constant