Replaced the complex table field used for editing the email recipients with GridField
Replaced instances of SAPPHIRE_DIR with FRAMEWORK_DIR
Replaced instances of sapphire/ in css and templates with framework/
Re-organized tabs on user defined form so they are top level
Replaced calls to toDropdownMap() with map()
Renamed getCMSFields_forPopup() top getCMSFields()
API change: refactored Form() into getFormFields(), getFormActions(), getRequiredFields()
ENHANCEMENT: added updateForm* extension hooks to allow customization of userforms
BUGFIX: gave custom scripts their own ID to enable it to be blocked.
BUGFIX Check for readonly when checking edit and delete permissions on FieldEditor
BUGFIX Don't just show "None" when the page is in readonly mode and showing the Fields tab, instead show a readonly representation of the field editor