Move post-review into a new top-level "rbtools" package

Since the dawn of time, post-review has lived in the Review Board tree, despite being a client script and not necessarily being needed on the server.

This moves post-review into a new rbtools package, which users will be able to easy_install (easy_install -U RBTools). The simplejson dependency will be fetched, and users won't have to go hunting in SVN for a script.

Over time, I'd like to add new scripts into here (such as one to apply a diff from a review request), and further down the road I'd like to create an "rbapi" (or something) package that contains a Python API for talking to a Review Board server, which rbtools (and post-review) will then use. For now, the goal is to just get post-review moved over.

Reviewed at http://reviews.review-board.org/r/788/
Patch by Raghu Kaippully to fix changesets with binary files in Perforce when using post-review.

Reviewed at http://reviews.review-board.org/r/787/
Fixes bug #585
This isn't a release, so don't mark it as such.
Get the absolute path of the git directory before getting the parent
directory.

Fixes bug #996.
Release rbtools 0.2 beta 1.
Bump the version to 0.2beta2.dev.
Patch by Eric Huss to fix an infinite recursion problem when using
post-review with invalid cookies.

Fixes bug #808.
Reviewed at http://reviews.review-board.org/r/813/
Patch by Eric Huss to support posting paths of files to Review Board
when using Perforce. This method doesn't take a change number, but
rather a set of files and optional revisions. His documentation states:

"We have some use cases where it would be nice to review entire files
post-commit in reviewboard.  Some examples:

- Our documentation needs to be checked in before it is reviewed.  If multiple
  people are working on it, or if it is created as a series of multiple
  checkins, reviewing specific change numbers is difficult.  With this, we can
  do "post-review //docs/main/some/project/...".

- If you work on a side branch for a while, possibly with multiple checkins or
  with multiple people, reviewing the changes on the side branch before
  integration to the main branch can be tricky.  With this, you can now do
  "post-review //path/to/my/branch/...@100,@120" where "100" would be the
  initial revision that created the branch and "120" is the last revision on
  that branch.  This allows you to easily review all changes on a branch in one
  review request.

- If you want to review an old, existing file that has had little or no
  reviews, you can now do this with "post-review //path/to/some/file" to review
  the whole thing.

The specific path types supported are:

  post-review //path/to/file
  # Upload file as a "new" file.

  post-review //path/to/dir/...
  # Upload all files as "new" files.

  post-review //path/to/file[@#]rev
  # Upload file from that rev as a "new" file.
  # (Not a very useful scenario, but it works.)

  post-review //path/to/file[@#]rev,[@#]rev
  # Upload a diff between revs.

  post-review //path/to/dir/...[@#]rev,[@#]rev
  # Upload a diff of all files between revs in that directory.

You can specify multiple paths on the command line.  I didn't use the range
revision option because the Perforce path syntax is a little more flexible,
especially if you post multiple paths.

Reviewed at http://reviews.review-board.org/r/753/
Patch by Jeremy Bettis to properly join a SVN repository base path and a file path using a "/" instead of "\" on Windows.

This fixes bug #939.
Fix the ClearCaseClient to not break post-review if cleartool isn't installed. We now properly do a check_install on "clearcase help".
Check for "hg: unknown command" as well as "abort:" when checking if
"hg svn" works. Otherwise it assumes the repository is hg-svn.
Patch by Chris Clark to set a max number of login retries, so as to
prevent entering an infinite loop. This can happen when the cookie is
assumed to be valid but doesn't work properly on the server. While this
won't fix logins in that situation, it will prevent the infinite loop
followed by a "maximum recursion deptch" error.

Reviewed at http://reviews.review-board.org/r/879/
Add Chris Clark to the authors list.
Patch by Raghu Kaippully to normalize files from Perforce with \r\r\n
newlines, translating them to \r\n. This can happen in some Perforce
setups when dealing with a file checked out from one platform and
modified on another, for example.

Fixes bug #1071.
Reviewed at http://reviews.review-board.org/r/826/
Patch by Steven Russell to fix working with Perforce file paths containing
spaces.

Fixes bug #840.
Reviewed at http://reviews.review-board.org/r/815/
Mark a file as read/write instead of write-only in PerforceClient._write_file.

Fixes bug #1143.
Reintroduce forcing removal of the cookie when cookie-based validation fails the first time. This was broken in r1986.
Fix a missing space when building a revision string for ClearCase.
Use 'json' module if it's available.

simplejson is now part of the Python standard library, but it's named
'json'. This change alters post-review to use it if it's available,
which reduces the amount of stuff people have to install (if they have
Python 2.6+)

Committing on behalf of David.

Reviewed http://reviews.review-board.org/r/887/
Install post-review as a Python module, with a generated post-review (or
post-review.exe) wrapping it. The official way to install post-review now is by
installing RBTools.

Reviewed at http://reviews.review-board.org/r/916/