Changed compiler structure

- General IGR tools such as traversals are now part of IGR
- DVM specific stuff has been moved to the backend
- Removed traversals, as they are now part of IGR.

The idea is that IGR doesn't know anything about the outside world, it's a simple graph representation that can be changed by both front and backends depending on what they have to do.
IGR Should be rich enough to support both back and frontends, but it should not depend on either of those.