Moved some types to their own files

Also added new IDebuggerBackendObject interface to mark all objects
that come from the debugger engine and that may potentially be
remote objects.
Wrap remote objects

Give a change to the debugger session to create wrappers for debugger objects
that potentially may need to be isolated from the main thread.
Allow wrapping raw value references