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/
Merge branch 'release-2.0.x'
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/
Merge branch 'release-2.0.x'
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/
Merge branch 'release-2.0.x'
Fix style inconsistencies in review request change descriptions.

There were major two inconsistencies between the Markdown-capable review
request fields and the change description rendering.

Visited links in the fields would appear with the standard purple color
(or whatever is used by the browser). Non-visited links would appear in
the standard blue (or, again, whatever is used by the browser). However,
change description text would force blue. Now we use the default color
for the browser, including the default visited link color.

Code blocks also appeared too big in the change description text. We now
set it to use the same font size as the parent rich-text div.

Reviewed at https://reviews.reviewboard.org/r/6654/
Allow links to work in custom review request action drop-downs.

Custom review request actions in drop-downs weren't able to link to other
pages, due to the drop-down menu's action handler preventing events from
propagating.

We now only prevent propagation for the menu label itself.

Testing Done:
Testing was only done on the review_export extension and all core menu functionality.

1. Checked other dropdown menus to see if their actions worked (Close -> Submitted, Close -> Discarded)
2. Tried the primary menu actions (actions with no dropdowns)
    a) View Diff
    b) Download Diff
    c) Review
    d) Ship It!
3. Tested the functionality on File Attachment actions:
    a) Update
    b) Delete
All Worked successfully.

Reviewed at https://reviews.reviewboard.org/r/6669/
Add Mark Loyzer to the AUTHORS file.
Merge branch 'release-2.0.x'