awkward behavior of Event's preferred IDs

`Event` has three `ResourceIdentifier`s referencing other objects..
 - `preferred_origin_id`
 - `preferred_magnitude_id`
 - `preferred_focal_mechanism_id`

Right now their handling is pretty strange and also awkward.

 - they are not cleanly defined with the `Event` class but handled/documented somewhat implicitly only through the getter methods for the object they refer to
 - it seems these attributes are expected to be set with strings (of the `ResourceIdentifier`)... why not just use the `ResourceIdentifier` itself?
 - in principle I'd rather make the respective getter methods (e.g. `Event.preferred_origin()`) into property/setter pairs, that would be much more convenient to use if one could get/set like..
```python
old_preferred_origin = event.preferred_origin
event.preferred_origin = some_other_origin
```

However, the last part is probably not doable with staying backwards compatible and not breaking old cold... :(

Ideas? Opinions?