Update a cached interface.
Called by L{update_interface_if_trusted} if we trust this data.
After a successful update, L{writer} is used to update the interface's
last_checked time and then all the L{watchers} are notified.
@param interface: the interface being updated
@type interface: L{model.Interface}
@param new_xml: the downloaded replacement interface document
@type new_xml: str
@param modified_time: the timestamp of the oldest trusted signature
(used as an approximation to the interface's modification time)
@type modified_time: long
@raises SafeException: if modified_time is older than the currently cached time