Always give stored property initializers the linkage of the type
that contains them, even if the property is less visible than the
type.
This fixes the case where a type defines a private property, and an
extension in a different file from the same module defines a
constructor.
Fixes <rdar://problem/32743703>.
If the initializer is in a different file than the original
type, and the original type contains a stored property that
has both an initializer *and* a declared type, then the
initializer expression will not have been type checked.
So we must look at the type of pattern, which should still
be correct.
Fixes <https://bugs.swift.org/browse/SR-3942> and
<rdar://problem/25705157>.