Fixes tabs appearing in the subject line of emails.

Python 2.7 has a problem that causes tabs to be used to break up long headers
instead of spaces. When Review Board sends an email with a Subject longer than
62 characters, it inserts a tab to seperate the text into mutiple lines.

Now instead of the Subject header being seperatated by tabs it is seperated by
spaces.

Testing Done:
Ran unit tests.

Bugs closed: 3613

Reviewed at https://reviews.reviewboard.org/r/6647/
Trivial fix for webapi test failures from the ">" Markdown escaping change.

Some of the unit tests in the webapi tested against an escaped ">", but
as of a recent change, this is no longer escaped. This is a simple fix
to remove the escaping.
Fix a renamed file that snuck in.

My previous commit had a file in the index that shouldn't have been
there. Oops. It's been fixed.
Update email notification logic to honor should_send_own_update flag

If a user was explicitly listed in a review request along with also being a
member of a group assigned to a request, the should_send_own_update setting in
the users profile would not be honored because the check was happening before
we added explicit users to the to_field list. This also fixes the issue where
we were trying to remove email address that might not actually exist (a blank
review request).

Testing Done:
Had a user create a review request that lists me as an explicit reviewer along
with a group that I'm also a member of; commented on the issue and I never
recieved an email notification.

Bugs closed: 3681, 3684

Reviewed at https://reviews.reviewboard.org/r/6663/
Issue 3444: Autocomplete is too agressive

Matches beginning of:
- in Group: matches beginning of group name or group alias.
- in People: matches beginning of username or first or last name.

- Autocomplete only replaces input with first dropdown item if input is a
  prefix for the item.
- COMMA key no longer triggers autocomplete; TAB and ENTER keys only work.
- Delete key (not backspace) no longer hides autocomplete dropdown.
- matches dropdown hide after a previous match has been made on the input box.
- Reverted delay values.

Issues reported:
https://code.google.com/p/reviewboard/issues/detail?id=3622
https://code.google.com/p/reviewboard/issues/detail?id=3629
https://code.google.com/p/reviewboard/issues/detail?id=3620

Testing Done:
- No unit tests currently exist for ui.autocomplete.js
- Test input that matches beginning of group name or group alias. Making sure
  each group has a unique name and alias so it's only matching one field.
- Test input that matches beginning of username or first name or last name.
  Making sure each user has unique, username, first and last name so it's only
  matching one field.
- Header bar search tested and still works as expected. Matching one of group
  name, group alias, username, first name or last name.

With 2 users and 2 groups (John and Johndone), tested the following cases on
Windows 8.1 with Chrome 38, Firefox 32, and IE11, and on Linux Mint 17 (Ubuntu
14) with Chromium 37 and Firefox 32:
- type 'John' (wait for dropdown), type 'd', hit TAB/ENTER quickly, does not
  autocomplete since the dropdown hasn't updated due to delay.
- type 'Jo' (wait for dropdown), hit TAB/ENTER, autocompletes to John.
- type 'Johnd' (wait for dropdown', hit TAB/ENTER, autocompletes to Johndoe,
  remove 'ndoe', hit TAB/ENTER, autocompletes to John.
- Comma acts like regular input, does not trigger autocomplete. Starting to
  type another name after a comma behaves normally.
- TAB acts as normal when autocomplete dropdown not present (jumping through
  elements)
- ENTER act as normal when autocomplete dropdown not present (hitting OK below
  input field)

Bugs closed: 3444

Reviewed at https://reviews.reviewboard.org/r/6333/
Short-circuit diff patching for moved files with no changes.

The comment for `DiffChunkGenerator.get_chunks()` indicates that moved files
with no changes should be returned as an empty list without actually fetching
source files or applying patches, but this wasn't the case. This change fixes
the conditional to return the empty list.

Testing done:
- Tested a moved file with no changes. Saw that it displayed correctly without
  ever calling out to 'patch'
- Tested a moved+edited file. Saw that it displayed correctly.
- Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/6655/
Fix trimming trailing paragraphs in Markdown that contain elements.

The code for trimming empty paragraphs didn't consider that a paragraph
may have children but not text. It now checks for any child nodes before
determining whether to trim.

Reviewed at https://reviews.reviewboard.org/r/6671/
Remove illegal characters from XML strings before parsing.

It's easy for people to unintentionally inject XML-unsafe characters
into a string from a copy/paste when filling out the Description or
Testing Done fields of a review request.

We now sanitize the XML before attempting to parse it, removing any
illegal characters. The result is a string that can be safely parsed
with no noticeably defects.

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