Put single class on the row in addition to column.

Makes it possible to target and apply specific styling in case of
one diff pane view (newly added file for example). It was impossible
to apply some specific styling in this case. For example making
gutter on both sides have green background but have it only on the
right in 2-pane view was more or less impossible.
Merge pull request #28 from rchl/single-column-class

Put single class on the row in addition to column.
Use standard recipient filtering for rebase e-mails.
Update CONTRIBUTORS
Improve fairness/responsiveness of background services

The "changeset" and "highlight" background services use a shared base-class
(JSONJobServer) that implements request queueing: a client connects, writes
a list of object literals ("requests") in JSON form, and then waits for a
list of results (typically copies of the requests with some more
information in them.)

Before these changes, the order in which requests were serviced was
"randomized" by storing all pending requests in a dictionary and then
popping one at a time to process them.  (The "randomization" achieved by
this scheme was not exactly intentional.)  Assuming the actual order in
which requests were serviced was actually random, this meant that on
average, all clients would finish at roughly the same time, and that time
would be determined by the client with the longest list of requests.  If
one client had a huge list of requests, the background service would be
unavailable to all clients for a long time.

This commit changes the queuing policy by keeping a queue of clients with
pending requests.  Each time a new job is to be started, a request is
picked from the client at the front of the queue, and the client is pushed
to the back of the queue.  This should achieve a situation where the time
it takes for any given client to have all requests processed is something
like nr_requests x system_load, which seems fair enough.

As a side-effect of the implementation changes, the strategy for dealing
with identical requests from multiple clients changed somewhat.  The base-
class used to group together such requests and run only one job.  Now, it
first allows the sub-class to intercept a request before it's processed
(which allows the sub-class to check if the request is actually a no-op)
and second assumes that processing a request is always okay, even though
an identical request was processed while the first was queued.

The syntax highlight service intercepts requests, since the check is very
cheap (checking if a file exists.)  The changeset service doesn't, since
it needs a database connection to check if a changeset already exists, and
only connects to the database in the slave processes today.  Changesets
are fewer and bigger, though, so the overhead of starting a slave process
only to discover the changeset is already in the database is insignificant.
Revert workaround for Opera bug related to base element and pushState.

The bug about BASE element being erroneously eliminated by
history.pushState() is long fixed.
Optimize state saving on scrolling.

Update history state 1.5s after scrolling has stopped and not on each
scroll event.

Fix is targeting Chrome primarily due to its favicon flickering
madness on calling pushState(). Especially on Mac, where scrolling is
per-pixel, the favicon flickering becomes very noticeable.
Don't restore state when popstate event's state is null.

A call to restoreState collapses all expanded files. That conflicts with
commit.expandAllFiles if user has it enabled. This problem is only visible
in Safari and Chrome because only these browsers trigger popstate event on
page load.
Add "OperaCritic-Repository" to Critic e-mails
Improve comment propagation

Reimplemented comment propagation code to make it more robust and more
capable of dealing with non-trivial situations.  Known issues fixed or
improved by this is:

* Comments against lines in files modified by a later merge or rebase in
  the review were not propagate forward properly to commits after the
  merge or rebase.  Issues raised in such circumstances would never be
  marked as addressed by later commits.

* Crash when attempting to comment lines in a version of a file that was
  introduced into the review by a merge commit or rebase but where the
  file is not included in the (equivalent) merge commit's diff because
  there were no (suspected) conflicts in the file.

* Reopening an issue against lines that are themselves modified by a
  later commit.  In that case, the issue is now left as "addressed" only
  with a new commit as the "addressed by" commit.  It's possible to
  reopen the issue again from there, eventually reaching either an open
  issue or an issue that is marked as addressed by the commit that
  actually addressed it.

* Support for writing comments via /showfile even if the file in question
  has been changed in the review.  This was previously not supported
  simply because the old comment propagation code was slightly difficult
  to reuse.

Notable changes:

* Introduced a new utility class Propagation used whenever comments are
  propagated between file versions (when initially created, when new
  commits are added to the review and when reopening an issue.)

* Dropped the column 'commit' from the table commentchainlines.  It was
  confusing since it was not included in the primary key of the table,
  and the columns that make up the primary key could have identical
  values for several different commits.  The value in the 'commit' column
  was thus just a commit (the first) where the comment existed against
  the specified lines.  It wasn't used a lot, and where it was, it was
  either wrong or inaccurate.

* Added columns 'from_addressed_by' and 'to_addressed_by' to the table
  commentchainchanges to properly record the changes to the column
  'addressed_by' in the table 'commentchains' when reopening an issue
  that ends up being addressed again by a different commit.  Previously,
  when reopening an issue, the 'addressed_by' column was always set to
  NULL so changes to it needn't be recorded explicitly.
Don't ignore "Name:" field from "Add Repository" page
Don't crash for "Add Repository" with a path which is already in use
Don't crash for "Source repository:" URLs longer than 256 chars
Disable diff line wrapping on pane resizing.

Both diff panes are in the same table row and making one side smaller often
enlarges line height (also for the other side) due to forced line wrapping.
Disable line wrapping when starting pane resize to avoid that ugly effect.
Drop duplicate CSS border/font-style properties
Drop empty CSS rules
s/grey/gray/ to silence linter
Drop CSS margin property since it has no effect on inline elements
Set more sensible permissions on temporary file

The temporary file created to work around the problem that the critic
system user might not have read access to the installation directory
was created with the permissions 0004 (readable only by others) which
meant that if the critic system user was the owner of the file or,
more likely, member of the file's group, installation would fail.
Make header menu items always be links

The menu item will now include such a link even in cases where it means a page
will link to itself.