Equal method
This release adds an Equal method to all types, for easy equality checks.
It also adds ValueOrZero to the zero package.
Types in the null package are considered Equal if they're either both invalid, or both valid and have the same value.
Types on the zero package are considered Equal if their ValueOrZero is the same, so an invalid string and a valid "" are equal.
This will be the last release before v4.