Implement revision parsing for Perforce.

This change implements PerforceClient.parse_revision_spec. This can take in
zero, one, or two arguments.

With zero arguments, this will return the 'default' changelist. With one, it
can be a changelist that's either pending, shelved, or submitted. In all three
of those cases, the changes that will be posted will be the changes introduced
in that changelist. With two arguments, the first argument must be a submitted
changelist, and the second can be any of pending, shelved, or submitted.

This is not yet used for diffs, since handling submitted and shelved changesets
will take additional work.

Testing done: Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/5151/