Large update: skinning, SharpDX 2.5, comment review, etc.

1. Skinning improvements. Try these out in the TimelineEditor using
commands in the View menu. (Alan)
* Fixed a few issues with CustomColorTable and specify more override in
sample skin.
* Updated UI type editor to accept skin.
* Skin is now applied to all property editing controls that are returned
from IPropertyEditor.GetEditingControl().
* Bug fix: toolbar button highlight and toggle status were broken when
applying non-default skin.
* Bug fix: disabled SetFont in PropertyView because it was causing
SkinService to throw exception due to cloning a disposed font.
* Bug fix: apply skin was clearing output panel.
* Added FormNcRenderer to renders non-client areas (title bar, form
border, caption buttons, form icon, and title text).
* Removed border from ConsoleTextBox.
* Updated Dark.skn and Light.skn.
* Fixed a one pixel off drawing error PropertyGridView.
* Removed onpaint method in PropertyEditingControl.
* Removed border from ListBox used in HistoryLister.
* Minor tweak to LongEnumControl.

2. Reviewed, added, or improved all public and protected member comments
in Framework and Samples directories. Made changes to 343 code files.
(gstaas)

3. Provided a Shell type drag drop interface to a drag drop action.
Calling the right methods on a form makes it show the icons from the
shell (so the images when you drag a file over explorer for example),
but also allows you to attach your own image to a drag drop action when
initiating a drag drop. (Tom)

4. DefaultTabCommands: fixed a problem where sub-document windows (like
circuit group windows) could cause a crash, because the control's
description was an illegal path name (e.g., "Untitled:Group"). (Ron)

5. Allow for the creation of a TextLayout using a transformation matrix.
(Tom)

6. Added method to get the bounds from a D2dGeometry. (Tom)

7. New version of SharpDX, based off of the 2.5.0 Stable release. (Tom)

8. Most math classes, like Vec3F, have had their ToString() methods
improved to work with European languages and to have more consistent
behavior. The main problem was that in languages that use a ‘,’ as a
decimal point, then a ‘;’ should be used to separate numbers in a list.
Previously, a ‘,’ was hard-coded to separate numbers in a list
regardless of the current culture setting. Addresses issue #5. (Ron)
* Added StringUtil.GetNumberListSeparator(IFormatProvider).
* FloatArrayConverter: now uses the appropriate number separator (e.g.,
',' or ';') depending on the current culture.
* Past behavior:
ToString() is not valid for European cultures for either persistence or
GUI. In English, it’s valid for persistence and GUI.
ToString(null, null) is the same as ToString().
ToString(“G”, englishCulture) is valid for GUIs in English. Parentheses
are added. Float is converted to double prior to printing.
ToString(“G”, euroCulture) is not valid for GUIs anywhere.  Parentheses
are added. Float is converted to double prior to printing.
ToString(“R”,CultureInfo.InvariantCulture) is valid for persistence
everywhere.  Parentheses are added. Float is converted to double prior
to printing.
* Now:
ToString() is valid for GUI in all cultures. In English, it’s valid for
persistence and GUI.
ToString(null, null) is the same as ToString().
ToString(“G”, englishCulture) is valid for GUIs in English.
ToString(“G”, euroCulture) is valid for GUIs in Europe.
ToString(“R”,CultureInfo.InvariantCulture) is valid for persistence
everywhere.

9. Make CircuitValidator no longer require the adapted DomNode also
support ReferenceValidator( CTE does not need ReferenceValidator because
its wires are set up very differently and specially handled) (Shen)