Made struct definitions themselves indicate that the struct is readonly (C# 7.2 feature introduced readonly structs)
Added [Pure] attribute to appropriate struct functions, to indicate intent, allow compatibility with pre/post conditions, and help analyzers not produce false positives (including ReSharper)