Proposed: Records can be value types using the Struct attribute

Given this record:

```FSharp
type vec3 = { x: single; y: single; z: single }
```

We should optionally allow this record to be a value type:
```FSharp
[<Struct>]
type vec3 = { x: single; y: single; z: single }
```

The reasons are the benefit of using record syntax/semantics and the performance characteristics of value types.

Things to do:
1. Unit Tests
2. Equality doesn't work, this needs to be fixed.
3. Do not allow struct records to be instantiated using the default ctor:
 ```FSharp
 let v = vec3()
 ```

There may be other things that I'm missing, but I was requested to get a PR started so we can begin conversations of what else is involved. Currently, the struct attribute does work, and indeed the type will be a value type; but there are just some minor issues that need to be worked out.