Save and restore bidi cache when saving and restoring the iterator.
Not tested, just compiled.
src/bidi.c (bidi_shelve_cache, bidi_unshelve_cache): New functions.
src/dispextern.h (bidi_shelve_cache, bidi_unshelve_cache): Declare
prototypes.
src/xdisp.c (SAVE_IT, RESTORE_IT): New macros.
(pos_visible_p, face_before_or_after_it_pos)
(back_to_previous_visible_line_start)
(move_it_in_display_line_to, move_it_in_display_line)
(move_it_to, move_it_vertically_backward, move_it_by_lines)
(try_scrolling, redisplay_window, display_line): Use them when
saving a temporary copy of the iterator and restoring it back.