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