(mode_line_noprop_buf, mode_line_noprop_buf_end)
(mode_line_noprop_ptr): Rename from frame_title_*.
(store_mode_line_noprop_char): Rename from store_frame_title_char.
(store_mode_line_noprop): Rename from store_frame_title.
(mode_line_target): New enum to specify current output target
for mode line formatting.
(display_mode_element): Test it rather than frame_title_ptr and
mode_line_string_list to determine where output should go.
(mode_line_proptrans_alist, mode_line_string_alist): Make static.
(Vmode_line_unwind_vector): New variable.
(format_mode_line_unwind_data, unwind_format_mode_line): New
functions for unwind protection in mode line formatting.
(x_consider_frame_title): Use them and new local var 'title_start'
to support nested calls to format-mode-line. Set mode_line_target
to MODE_LINE_TITLE.
(Fformat_mode_line): Use them and new local var 'string_start' to
support nested calls to format-mode-line. Set mode_line_target to
MODE_LINE_NOPROP or MODE_LINE_STRING. Don't trim trailing dashes.
(decode_mode_spec): Don't make infinite number of trailing dashes
for MODE_LINE_NOPROP and MODE_LINE_STRING targets.
(syms_of_xdisp): Initialize and staticpro mode_line_string_face,
mode_line_string_face_prop, and Vmode_line_unwind_vector.
(init_xdisp): Initialize mode_line_noprop_ptr to start of _buf.
Initialize mode_line_target to MODE_LINE_DISPLAY.