Point/Size/Rectangle updates, other changes

Some major updates to Point/Size/Rectangle to make them more consistent.  All angle-related api's are degrees only, since conversion between radians/degrees is extremely simple there is no need to provide overrides for radians.  This is similar to WPF and WinForms api's.

All non-static methods of Point/Size/Rectangle (Align/Rotate/Offset/Intersect/Union/etc) modify the struct directly, whereas if you want to return a new struct, use the static method equivalent.  This again is similar to WPF.

Some other updates:
- Removed Generator caching as using singletons in your app would achieve a better effect, and the framework itself does not need any caching of generators.
- DockLayoutHandler in winforms no longer clears the controls first - this causes the form to flash as it removes and adds.  The existing control is removed *after* the new control is added to reduce this.
- Generator validation is now only enabled for debug mode, not release mode (via conditional attribute)
- ActionItemSubMenu.Id is renamed to ID to be more consistent with other ID properties in the framework.