[libc++] Take 2: Implement CTAD for map and multimap

This is a re-application of r362986 (which was reverted in r363688) with fixes
for the issue that caused it to be reverted.

Thanks to Arthur O'Dwyer for the patch.

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

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