Mac: Make ScopedTypeRef require explicit constructors
Style guide requires explicit constructors.
Prior to this patch, a T* can be passed into a function that requires
a scoped_nsobject<T>, and the object will be released but not retained.
Also make the copy constructor that takes a different typename more
generic, allowing for different types (e.g, subclasses) in addition to
different traits.
Clean up all instances where we relied on this behavior.
BUG=
Committed:
https://crrev.com/1c9b983a8576851000408b49bf73090c4986240a
Cr-Commit-Position: refs/heads/master@{#397847}