TouchPanel Tests and Fixes

This PR adds a complete set of UnitTests for the TouchPanel including the gesture recognition.
Please see #2579 for discussion on the tests. The commits since then are the refactoring required to fix the TouchPanel implementation.

TouchPanelState has been changed so instead of queuing up events for processing it processes them as they come in. This means we don't lose touches if you don't call GetState for a while (or if a touch starts and begins in between).

Currently the TouchPanel tests are only included in MonoGame.Tests.Windows, but they could be included in the others as they are not platform dependant.

Fixes #2579
Fixes #2076

Enjoy :-)