Use .inline.h header files to break circular dependencies

- note, just moved stuff out, not yet included again...

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Fix project file link in VMThread.h, had absolute path

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Introduce GC* types for all heap pointers to distinguish them from pointers after loading through the read barrier

We need to distinguish between pointers that need to be handled with a read barrier, and between pointers that already went through it.

So, we call pointers that need to go through the barrier: heap values, or GC* pointers.
And all the stuff that was already processed: loaded values, or VM* pointers.

Each class knows the corresponding type in form of a typedef for Loaded or Stored. These can be used in templates and pointer casting.

Signed-off-by: Stefan Marr <git@stefan-marr.de>