Add descriptive error message for SetPixelColors and GetPixelColors when used with wrong format.
Merge branch 'master' of https://onemseng.visualstudio.com/defaultcollection/Graphics%20API%20Layers/_git/DirectX_WinRT
Assorted API tweaks to make high DPI devices easier to work with and more likely to do the Right Thing(tm) by default

- Add ICanvasResourceCreatorWithDpi interface
- Add DPI properties to CanvasBitmap, CanvasDrawingSession, CanvasImageSource, and CanvasControl
- Plumb DPI through from one object to another in more places than it previous was
- CanvasRenderTarget constructor takes size in dips rather than pixels
- CanvasImageSource constructor takes size in dips rather than pixels
- CanvasImageSource.CreateDrawingSession uses dips
Projection of CanvasSwapChain.
Effects automatically insert DPI compensation when a source bitmap has different DPI from the target device context

With this change, Example Gallery effect demos, Game of Life, and Burning Text are rendering correctly on high DPI devices
Rename SaveToFileAsync and SaveToStreamAsync -> SaveAsync
Cosmetic improvements to make Example Gallery burning text and effect demos look good on Phone

Added dynamic scaling on a few things that were otherwise too big to fit the screen.

Dropped the text overlay from the effect demo when running on screens too small
to have room for it.

Fixed some stuff that was slightly off center, which wasn't noticeable on a
large display but got ugly as the screen size decreases.

Optimized how the luminance to alpha demo used turbulence, which was too slow on phone HW.
Example Gallery circle demo adapts to smaller screen sizes
Projection of CanvasSwapChainPanel.
test.external ExpectCOMException helpers aligned to test.internal versions
Fix CanvasControl layout bug - at high DPI the child image control could get the wrong size
ExampleGallery fit & finish
CreateResources events can now register AsyncActions to be tracked
Add DPI test to Example Gallery

This test cycles through a bunch of different permutations of ways to draw stuff, either
on a timer or under manual control. All versions should draw the same image within fixed
guidelines, so it's easy to see if any are coming out the wrong size.

It can catch any of the DPI issues I've recently fixed. Also demonstrates one bug
that's on our backlog: bitmap -> image effect -> image brush path doesn't work right at
high DPI. Also includes test coverage for swapchain DPI, which we have a backlog to look
at (swapchains are visually sized right today, but not preserving the right pixel
resolution at high DPI).
Treat D2DERR_RECREATE_TARGET as device lost
Re-raise the CreateResources event in response to monitor DPI changes

This allows apps to recreate any DPI dependent resources such as rendertargets.

Added a CanvasCreateResourcesReason property to CanvasCreateResourcesEventArgs,
so apps can detect when this is the case and optionally try to be smarter about
only recreating the minimal subset of affected resources.
Partial fix for image brush + effects + high DPI bug

The bug:
  - Set an image effect as the source for CanvasImageBrush
  - This eagerly queries GetD2DImage, which causes the effect to realize itself onto the target device
  - It does this so using the resource creation context
  - But DPI is per context, not per device, so when you later draw the image brush onto a
    different context, the effect may be configured with wrong DPI compensation settings

The fix:
  - Pass the target context into ICanvasBrushInternal::GetD2DBrush
  - The image brush implementation knows when its source is an effect graph, and refreshes
    the effect realization with these final DPI settings

The flaw:
  - Since we don't have interop for effects yet, this only works if you set the WinRT
    effect directly onto the WinRT image brush. If you do brush interop with native, we can
    forget that the input is actually an effect graph and lose the ability to compensate
    for DPI. Plan to address this later as part of the broader effect interop backlog item.
Bump version number to 0.0.9