Create a separate app domain for Play In Editor

A separate app domain is now created whenever a PIE session starts, and
unloaded when the PIE session ends. This ensures proper cleanup of PIE
sessions, whereas previously UnrealEd kept complaining about
uncollectable native objects that were still referenced by managed code.
The code currently assumes PIE sessions do not overlap, that is to say
only one PIE session exists at any one time.

Closes #15.