Updated the way Enums are saved to make the system more robust.

Now saves fully qualified assembly name + Enum type name + String value of the enum and attempts to re-resolve the Enum value at runtime. It is now possible to retrieve the String value of the enum, without crashing, if the Enum type is no longer available for some reason.

There are still a couple of TODO items but it is pretty robust as is. Tried it out on a few sites of mine and it seems to be working well :-)