Basic Perforce provider

Should look and feel like the other SVN/HG/etc... providers.  I had to add a few Perforce specific parameters and support for Workspaces.  I may need to enhance the use of Workspaces later, but this should get most Perforce users started.
Paul - a GitHub PR reflects a branch in your fork, and will track any changes to that branch including new commits and modified commits.

You can use the `git rebase` command to modify the commits on your branch, and this will be reflected in your PR once you push that branch back to GitHub. However, your work is on your fork's master branch, which means your master branch and the upstream master branch required a merge. This makes the process a lot more difficult.

Here's a good writeup on how to use a rebase workflow: https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request