What is the difference between Go's value types and reference types?