Make common_type's implementation common 

Summary:
Currently the C++03 implementation of common_type has much different behavior than the C++11 one. This causes bugs, including inside `<chrono>`.

This patch unifies the two implementations as best it can. The more code they share, the less their behavior can diverge. 

Reviewers: mclow.lists, ldionne, sbenza

Reviewed By: mclow.lists, ldionne

Subscribers: libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D59678

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@357370 91177308-0d34-0410-b5e6-96231b3b80d8
2 files changed