Fix origin transform in DrawInternal with src rect

This change fixes a transform applied on the origin parameter
passed to DrawInternal, based on the ratio between the destination
rectangle and the texture width / height.

When a source rectangle has been specified, its size should be used
instead.
Fix edge-case when source rect has 0 width/height

Nothing would get rendered when the source rectangle had a width or
height of zero, whereas XNA does render something.
This makes use of the offsetInBytes parameter in SetData and allows for reuse of allocated GPU memory.
Fix incorrect use of Dispose in ShaderProgramCache
The finalizer was telling Dispose(bool) to dispose of managed objects, which is incorrect.  This was causing a crash on exit.
Fixed bad #if in templates.
Fixed render targets on WP8
Use generic link for opening store on iOS
Fixed some threading issues on iOS
Removed exception on minVertexIndex in GraphicsDevice.DrawIndexedPrimitives().
Added docs to DrawIndexedPrimitives.
Use @Aranda's code for marketplace on iOS
Whoops
Fix Matrix::Transpose.
Adding vertexOffset support to DrawUserIndexedPrimitives in WinGL
Set the IsRunningSlowly flag to false when the game is not in fixed time step mode.
Add support for Keys.RightControl/Keys.RightShift

This is a new implementation that depends on information found at the
event status.
It doesn;t need CoreWindow.GetKeyState(...) as my previous commit.

We detect RightControl by checking KeyStatus.IsExtendedKey.
To detect RightShift we need to check the scancode.
Copied over readme and contrib from develop branch.