Array, Set, Dictionary, and Optional all provide unconditional conformances
to Encodable & Decodable that dynamically check whether their type arguments
are Encodable/Decodable. Now that we have conditional conformances, make
these unconditional conformances properly conditional, removing all of
the Swift 4-era type-erasure hacks.
Fixes rdar://problem/34989162.
Optional's Mirror (the default one) used to report the display style as
"enum", which is technically correct, but we have a more specific style
for Optional.
<rdar://problem/24450196>