Backtrace link to source file in Redmine repaired - fixes #374
Tally: correct the sort order

Alter tally sort order to be by popularity descending instead of ascending.
Because we should show the most popular entries at the top.
Merge pull request #427 from iFixit/tally-fix-sort-order

Tally: correct the sort order
Proper linebreaks in comment notification emails
Error Email: add similar count to subject

It's pretty useful when visually scanning the messages in my inbox to
see the count in the subject instead of having to open the email.

The relative importance of an email roughly scales with similar_count,
so it's a fairly important piece of info.
Github Login: allow setting to blank

Previously, creating a user without a github login would result in
user.github_login == '' instead of nil. This prevented creating more
than one user without a github login because of the unique index on the
field.
Unicorn: shut down old master upon first fork

After the first child forks, shut down the old master.
Previously, the old master and it's workers would jut sit there
forever.

See: https://github.com/blog/517-unicorn
     https://github.com/sosedoff/capistrano-unicorn/blob/master/examples/rails3.rb#L30

Tested in production.
Merge pull request #431 from iFixit/unicorn-kill-old-master

Unicorn: shut down old master upon first fork
Merge pull request #429 from iFixit/email-notices-errcount-in-subject

Error Email: add similar count to subject
Merge pull request #375 from bjpe/redmine_link

Backtrace link to source file in Redmine repaired - fixes #374
Merge pull request #430 from iFixit/user-create-blank-github-username

Github Login: allow setting to blank
App: use unresolved_count method

Keepin it DRY.
App: don't obliterate app.==

Mongoid defines it's own ==() and eql?() methods that are based on the
ObjectId. Comparable provides it's own ==() function that uses `<=>`
under the hood.  == is used when inserting into a Hash, App docuemnts
are put in hashes hundreds of times per request. We don't was to to call
<=> hundreds of time.

Putting the Comparable mixin at the top allows the mongoid mixin to
override == with it's faster implementation.
Drastically speed up Errbit

Enable the identity map for Mongoid. This allows subsequent finds for
the same object to skip the DB and use an in-memory store of all
retrieved records.

In many cases this reduces the number of DB queries from _hundreds_ to a
few tens.

This is particularly noticable when showing lists of problems.
Previously each `problem.app` reference caused a Apo.find() using the
`app_id`, now it's an in-memory lookup.
Merge pull request #433 from iFixit/performance-improvements

Huge Performance Improvements