Make some improvements to our changesets code.

The existing stuff for changesets is pretty heavily biased towards
Perforce--from assuming that the changeset ID will only be a number, to doing
some queries that will only make sense for servers that support pending
changesets with a server-side representation.

This change adds a "supports_pending_changesets" property to scmtools and gates
things based on that.

Testing done:
Ran unit tests, used this in conjunction with my post-commit branch.

Reviewed at http://reviews.reviewboard.org/r/4236/