Added lots of method comments
refactored some internal fields into properties to prevent a warning to do with appdomains marshalling by reference

Signed-off-by: Martin Evans <martindevans@gmail.com>