Create the PuzzlePathUnitTests project.

The LauncherTest class contains an example of an actual unit test as
well as one that intentionally fails.
Add more tests for the Launcher class.

Hopefully, this should be enough to get other people started.
Define the virtual controller and adapter.
Move the classes into a new folder.
Create an adapter for the virtual controller.

This adapter maps the keyboard and mouse to the virtual controller's
inputs.
Modify the Screens to use the VirtualController.

There's a lot more in this commit:
- Anything with InputState that appeared in the Screens was basically
replaced.
- Added the ability to check whether a virtual button was just
pressed or released, which is similar to how one would compare
the current keyboard state and the previous keyboard state.
- Remove the code in Game1.cs that would exit the game automatically.
- Remove the support of two or more adapters at the same time.
It just got too complicated to deal with. Instead, one can set
the active adapter with the Adapter property.
Add comments.

There are also a few minor things that I forgot about...
Change the VirtualAdapter class to be an interface instead.
Fix typos.
By convention, interface names start with an I.
The .csproj didn't save.
Fix an error with the PointMoved property.
Modify GameplayScreen to use the virtual controller.

The debug keys are left untouched, though.
Merge remote-tracking branch 'jorenz/unit-tests'