What is the difference between Go's sync and atomic packages for managing concurrency?