What is the difference between value types and reference types in Swift, and when should you use each in Samsung Electronics codebases?