Can we change the `add_valid_time_position()` to check the type of the `value` parameter?

```python
def add_valid_time_position(self, value):
    if not value:
        return
    elif isinstance(value, ValidTimeType):
        self.valid_time_position.append(value)
    else:
        raise ValueError("value must be instance of ValidTimeType")
```

We sometimes try to promote or cast datatypes when possible, so instead of raising a `ValueError` we'd do something like
```python
...
else:
    self.valid_time_positions.append(ValidTimeType(value))
```

We do this a lot with properties that accept `VocabString` instances or `StructuredTextType` instances, where there is a single "value" associated with that datatype and promotion of the datatype is intuitive. I don't think this fits that patter as `ValidTimeType` has`start_time` and `end_time` fields.