Updated Physics and Collision

Updated the game to use Farseer Physics engine. The Ball and Platform
classes were modified. The Gamescreen class was completely redone.
Merge branch 'master' into Brian_Collision-fork

There are still a lot of parts that need to be integrated properly,
but the physics engine works. Here are a few:
- The platforms defined in the XML file did not work well, so
the AddPlatform() method in the LevelLoader class is commented out.
- Similarly, I have the LoadLevel() method also take in a World
parameter, and I'm not sure if that's the best thing to do.
- I probably didn't put the other parts of the former GameScreen class
in the best places either...

Conflicts:
	PuzzlePathDimension/GameScreen.cs
	PuzzlePathDimension/Models/Ball.cs
	PuzzlePathDimensionContent/PuzzlePathDimensionContent.contentproj
Fix platform weirdness.

This commit allows the physics engine to work with all types of
platforms, not just those defined in the original Brian_Collision
branch. This allows the data in the example XML file to be interpreted
properly. The following changes were made:
- The 20x20 texture is now scaled to fit the size of the platform.
- Code has been added to compensate for the fact that the physics
engine treats (width / 2, height / 2) as the position of the platform.
- Due to this, the code that creates the walls was rewritten.
Remove some remnants of the old collision detection.
Add the Farseer source code to the repo.

Also, rewrite some parts of Platform.cs and CreateBox() to be a bit
clearer. The .dll is removed as well.
Possible fix for the assertion failure.

This needs to be tested more. Also, I changed the test level slightly
because it was possible for the ball to go inside the platform.
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'