What is Automatic Reference Counting in Swift? Explain how strong, weak, and unowned references prevent retain cycles.