Large update: Perforce, Direct2D, comments, bug fixes

Note that the ATF 3.7 release is stable and that these changes are
merged from our internal work-in-progress branch.

1. EnumerableUtil:
* Added IndexOf<T>(this IEnumerable<T> source, T value)
* Added IndexOf<T>(this IEnumerable<T> source, T value,
IEqualityComparer<T> comparer)

2. Minor breaking change:
Sce.Atf.Controls.Adaptable.Graphs.D2dGraphRenderer had a misspelled
property. MaxiumEdgeThickness has been renamed to MaximumEdgeThickness.

3. CustomColorTable: fixed four typos that were causing the wrong
settable properties to be used in the non-settable properties. Thanks,
Gary, for identifying these.

4. Direct2D: fixed memory leak in D2dTextLayout and D2dTextFormat.

5. Removed Sce.Atf.Dom.Template's abstract Model property, and made the
Target property abstract. Clients with derived classes can rename their
'Model' property to 'Target' to fix the compile error. The reason for
this breaking change is because the Target and Model properties were the
same thing, and so made the class unnecessarily complicated.

6. LINQ-related performance optimizations.

7. Added KeyPressEventArgs and PreviewKeyDownEventArgs for
Atf.Gui.Input.

8. Perforce improvements:
* Updated the Perforce .NET libraries to address the Heartbleed bug.
* Addressed multi-thread access issues and did a lot of clean-up.
* Breaking change: PerforceService.RequestProcessed mistakenly had a
setter and it has been removed. It has always been impossible for the
caller to know if all Perforce requests have been processed since that
knowledge has always been internal to PerforceService.

9. Work-in-progress check-in for skinning editor, a GUI-based way of
creating and editing skin files.

10. DefaultTabCommands: added a customization point so that clients can
specify which docked Controls should have these commands ("Copy Full
Path" and "Open Containing Folder") available on the tabs.

11. Collada schema file: removed the !DOCTYPE element because it was
causing a seemingly harmless (but annoying) XML exception in
XmlSchemaTypeLoader.Load(string) related to "DTD processing" in the .NET
XmlSchemaSet. I couldn't find a better fix. This was one of the more
minor issues reported in issue #9.

12. Documentation: many comments were improved in 176 code files.

13. CodeEditor: made it use the UnhandledExceptionService component

14. Sce.Atf.Adaptation.Adapter: fixed a problem with GetDecorators()
where the same object could be returned twice, if the Adaptee could be
adapted to the same object as the Adapter. Added a unit test to
demonstrate the problem and prove that the fix works. Corrected some
comments relating to IDecoratable. Thanks to Dan Radford for reporting
the problem and providing the fix.
http://tracker.ship.scea.com/jira/browse/WWSATF-1483

15. DomNode: Made the Copy() method also copy the ChildInfo. Previously,
the ChildInfo (which describes how the parent DomNode considers this
current DomNode) would be null until the parent is set. This is OK for
all nodes except the root DomNode, which requires a ChildInfo in order
to be persisted. So now, root DomNodes can be persisted even if they are
copies. Thanks to Paul Skibitzke for discovering this bug and suggesting
a solution.

16. ListViewAdapter fixed an exception "An item with the same key has
already been added" if the same domnode insertion was observed multiple
times, rare but possible

17. Circuit templates: fixed the bug that the original template UUID was
not recovered if you demote template reference instance to a copy
instance, then promote to a reference instance again, thus failed to
pop-up replacing or adding template dialog.

18. Spreadsheet-style property editor: fixed a problem where editing a
property in a row could cause other property values in that row to
disappear. This bug was introduced relatively recently, on 4/25, as part
of the skinning changes.