Ownership is truly a property not of a declaration, but of a function body. So
it makes sense to just match what we deserialize.
This also helps us to avoid mismatches if we lower ownership from a function,
delete it, and then relink it.
I also used this as an opportunity to clean up where we set that flag in
deserialization to only happen in one place for both declarations/definitions.
This allowed me to fold all of the weird direct calls to createFunction into a
singular SILSerializationFunctionBuilder::createDeclaration. This is the only
API that is needed by the SILParser so only providing that gives us a
significantly cleaner API.
rdar://42301529