CanvasBitmap / CanvasRenderTarget interop with ID2D1Bitmap

- CanvasRenderTarget tests updated to work in terms of the underlying D2D types (removes the need for the extra point of indirection, ICanvasRenderTargetDrawingSessionFactory)
- tweaks to RESOURCE_WRAPPER_RUNTIME_CLASS to allow us to mixin additional base classes
Add missing doc summary, and update doc tool to warn about summary tags that are present but empty
Projection of gradient brushes.
GetOrCreate overload that takes ID2D1Device1

This allows CanvasRenderTarget / ID2D1Bitmap interop.
ResourceTracker now QI's to IUnknown before making object comparisons
Update "UpdateAPIResourceFiles.cmd" to handle effects xml files
Effect codegen generates stable UUID values using a hash of the interface name as per RFC 4122
Effects only re-realize their D2D object if the device changes (was overeagerly using device context)

Also changed comparison logic for both effect and stroke style to compare IUnknown pointers rather than derived interfaces.
Ensure use of CanvasImageBrush with null SourceRectangle property throws an exception.
Improved BlendEffectMode docs (added blend equation diagrams)

Also fixed a bunch of tabs -> spaces formatting consistency issues
Remove #include pch.h from header.

The precompiled header should only ever be included as the #include in a cpp file.
Fix outdated comment in SimpleSample

While I was at it, I didn't like the way the ellipse looked in this "hello world" graphic, so I made it thinner and centered on the text
Use global /Zm option
GetOrCreate on ID2D1Bitmap will return CanvasBitmap or CanvasRenderTarget as appropriate

- renamed FactoryWithResourceManager to PerApplicationManager (since these are not necessarily used by factories).

- added handy "As" function for performing QueryInterfaces in a way compatible with our error handling scheme

- PolymorphicBitmapManager does the work to create the right type based on the ID2D1Bitmap's properties
Add copyright banners
Effect bugfixes and ExampleGallery improvement

1) Proper error message if the effect graph contains cycles
2) Update leaf node realizations even if parent effects are not dirty
3) ExampleGallery now animates the effect demos
4) Remove unused ExampleGallery OnLoaded event handlers
Change IEffect.Properties from IVector<IPropertyValue> to IVector<IInspectable>

Turns out we had misunderstood how IPropertyValue works in WinRT. This
interface is internal plumbing used to pass boxed value types across the ABI
boundary, and is specially understood by the .NET and C++/CX projections of
WinRT. The expection is that APIs wanting to pass arbitrary untyped data should
use IInspectable, which projects to System.Object in C# and Platform::Object in
C++/CX. IPropertyValue is still used by the WRL code which produces or consumes
these boxed values (and by the language projections themselves) but it is not
directly mentioned in the API signature.
BuildDocs - disable CS0108 -'member1' hides inherited 'member2'. Use the new keyword if hiding was intended.

Since the C# code generated by BuildDocs always intends to hide members that show up as hidden, we don't need this warning.
CanvasBitmap/CanvasRenderTarget.CreateFromDirect3D11Surface
DefaultBitmapResourceCreationAdapter::CreateWICFormatConverter - get string length directly from WindowsGetStringRawBuffer