Prevent changing Reference<> address
Prevent changing Reference<> address

Reactor's Reference<> class represents a C++-like reference. It can be
constructed from another reference, which creates a shallow copy, or it
can be assigned another reference, which is a deep copy, but it cannot
be assigned a new address. To enforce this, the address field was made
constant.

Also the default copy constructor outside the class definition, which is
considered a user-provided copy constructor, was replaced with an in
class defaulted default copy constructor. This makes it easier to
understand that the copy constructor does default copying of the member
fields when only looking at the class definition, takes fewer lines of
code, and may enable some optimizations.

Bug: b/191417833
Change-Id: Ied4ba3c7957b36efc06c19ce49f4e26309fb0c66
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/55029
Kokoro-Result: kokoro <2ac7b1f3fa578934c95181d4272be0d3bca00121@google.com>
Tested-by: Nicolas Capens <51edc787c30f24c4904e8ffbb5523c3a9f7a451d@google.com>
Reviewed-by: Alexis Hétu <1c7141772178a7e80858c3db5052b328076f08f4@google.com>

google/swiftshader,google/swiftshader,google/swiftshader