The function to_json_file can delete it's SerializableObject if it
doesn't have a Retainer associated with it. This fix adds said
Retainer. Retainers clean them selves up when possibly_delete is
called on their associated object.
Add a frame rate option to the conversion to opentime rationals as
otio generaly expects rationals to be in the form value/framerate.
Also add a check to make sure the rational is not in the form 0/0
as this can cause errors with OTIO.