Optimize the layout pass.

The comparator used in the layout pass has many calls of map::find(). Because
std::sort runs the comparator N*log2(N) times, the maps are looked up with the
same key again and again. The map lookup is not a very fast operation. It made
the pass slow.

This patch eliminates the duplicate map lookups using decorate-sort-undecorate
idiom. The pass used to take 1.1 seconds when linking LLD with LLD on Windows,
but it now takes only 0.3 seconds. Overall performance gain in that case is from
6.1 seconds to 5.2 seconds.

Differential Revision: http://llvm-reviews.chandlerc.com/D2358

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@196714 91177308-0d34-0410-b5e6-96231b3b80d8
Move static member functions out of a class.

Because compare() and its heper functions no longer have to be members of
LayoutPass class, we can remove it from the class. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@196715 91177308-0d34-0410-b5e6-96231b3b80d8
Fix -Wunused-function to unbreak buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@196716 91177308-0d34-0410-b5e6-96231b3b80d8