`rbt post` command uses API's DiffValidation endpoint before upload

Before updating a review request or creating a new one, `rbt post` command
validates the diff file and terminates if it does not pass validation. This
prevents the command from creating empty review requests when the supplied diff
file is invalid.

Testing Done:
Tested `rbt post` with:
1. Empty diff (error 219)
2. Diff from a different repository (error 207)
3. Non-diff file as a diff (error 224)
4. Valid diff (success)

using:
1. Git
2. Mercurial

Also tested `base_dir` with a subversion reporitory.

Fixes bug 2733.

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