Fix a typo.

s/Unexpexted/Unexpected/
Skip files where 'p4 print' provides a symlink

The riddle: how can a file both exist and not exist? The answer: symlinks! When
a symlink is checked into perforce running 'p4 print -o' will create a symlink,
not the file that it points to. This naturally makes postreview.py choke...

~% post-review
Traceback (most recent call last):
  File "/share/rbtools/rbtools/postreview.py", line 4115, in <module>
    main()
  File "/share/rbtools/rbtools/postreview.py", line 4061, in main
    diff, parent_diff = tool.diff(args)
  File "/share/rbtools/rbtools/postreview.py", line 2002, in diff
    return self._changenum_diff(changenum)
  File "/share/rbtools/rbtools/postreview.py", line 2299, in _changenum_diff
    self._write_file(old_depot_path, tmp_diff_from_filename)
  File "/share/rbtools/rbtools/postreview.py", line 2475, in _write_file
    os.chmod(tmpfile, stat.S_IREAD | stat.S_IWRITE)
OSError: [Errno 2] No such file or directory: '/tmp/tmpsCS-fw'

Resolving symlinks, especially those with a relative path would be tricky.
Also, there's no certainty that the file it points to is even in version
control. Hence I'm just dropping it from the review with a warning.

Testing done:
Tested this change both when reviewing a single symlink file and a batch of
files containing a symlink. We've been using this change against RBTools 0.3.

Reviewed at https://reviews.reviewboard.org/r/3221/
Support multiple local git commits in a git-svn repo

If you have two local commits and want to make a review for the changes
in the most recent commit, then "ancestor" will not have a corresponding
subversion revision.  This is okay, however.  We'll just use the
subversion revision for the merge-base, which is the most-recent-commit
that is in SVN.

Testing done:
Logically behavior is only changed in cases where we would crash, before.
Returning "None" causes len(None) to throw an exception.

Making a review using "post-review --revision-range=HEAD^" in a git-svn
repository with multiple local commits results in the expected behavior: a
review is created and the diff shows only the changes from HEAD.

Reviewed at https://reviews.reviewboard.org/r/3075/
Send the base commit ID for a change to the server when using Git.

When uploading a change to a new enough Review Board server, the base
commit ID is sent along in the request. This ID/revision represents the
upstream commit that the diff (or its parent diff) applies to. It can be
used by the server to communicate with hosting services that otherwise
do not work solely with the content found in the diffs.