function attr(opts) {
    return new Attribute(opts);
}
Defines a value attribute on the model.
Though not required, it is recommended to define this for each non-foreign key you wish to use.
Getters and setters need to be defined on each Model
instantiation for undeclared data fields, which is slower.
You can use the optional `getDefault` parameter to fill in unpassed values
to {@link Model.create}, such as for generating ID's with UUID:

```javascript
import getUUID from 'your-uuid-package-of-choice';

fields = {
  id: attr({ getDefault: () => getUUID() }),
  title: attr(),
}
```

@param  {Object} [opts]
@param {Function} [opts.getDefault] - If you give a function here, its return
                                      value from calling with zero arguments will
                                      be used as the value when creating a new Model
                                      instance with {@link Model#create} if the field
                                      value is not passed.
@return {Attribute}