Switch to copy-and-swap idiom for operator=.
This allows the compiler to elide a copy when rhs is a temporary.
Merge pull request #37 from BillyDonahue/value-efficiency

Switch to copy-and-swap idiom for operator=.