Add a fallback mechanism for undefined atom.

Summary:
In COFF, an undefined symbol can have up to one alternative name. If a symbol
is resolved by its regular name, then it's linked normally. If a symbol is not
found in any input files, all references to the regular name are resolved using
the alternative name. If the alternative name is not found, it's a link error.
This mechanism is called "weak externals".

To support this mechanism, I added a new member function fallback() to undefined
atom. If an undefined atom has the second name, fallback() returns a new undefined
atom that should be used instead of the original one to resolve undefines. If it
does not have the second name, the function returns nullptr.

Reviewers: shankarke

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1550
[PECOFF] Handle weak external symbols.

Summary:
This is a second patch to show how I'm going to use the fallback mechanism
to implement COFF weak external symbols. What I'm doing in this patch is
adding a new field to COFFUndefinedAtom for a fallback atom and add a new
parameter to the constructor to pass an optional fallback atom.

Reviewers: kledzik

CC: llvm-commits

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