(compile_pattern_1): Handle new argument `multibyte'.
(compile_pattern): Handle the flag `enable-multibyte-characters'.
(Vascii_downcase_table): Declare external.
(fast_string_match_ignore_case): New function.
(skip_chars): Handle multibyte characters.
(trivial_regexp_p): Handle regular expression "\\Cc" and "\\CC"
for category.
(compile_pattern_1): New arg `posix'. Controls the syntax spec
for parsing; also record it in the cache.
(compile_pattern): New arg `posix'.
(looking_at_1, string_match_1, fast_string_match): Pass 0 for new arg.
(search_buffer): New arg `posix'. Now static.
(search_command): New arg `posix'. All callers changed.
(Fposix_search_forward, Fposix_search_backward): New functions.
(string_match_1, looking_at_1): New subroutines broken out.
(Fstring_match, Flooking_at): Use them.
(Fposix_string_match, Fposix_looking_at): New functions.
(syms_of_search): defsubr new functions.
search_fastmap.
(syms_of_search): Initialize it.
(searchbuf_head): New variable.
(compile_pattern_1): Renamed from compile_pattern and made static.
Copy the regexp string in case the caller modifies it in place later.
(compile_pattern): New code, uses a cached entry if one is available.
The pattern buffer is now a return value instead of an arg.
(set_search_regs): Set num_regs directly, since there's no active
pattern buffer to pass to re_set_registers.
(Fstore_match_data): Likewise.
(Flooking_at): Use the new calling convention for compile_pattern.
(Fstring_match, fast_string_match, search_buffer): Likewise.
(max, min): Make these functions, not macros; we'd like to pass
them arguments that would be bad to evaluate more than once.
(newline_cache_on_off): New function.
(scan_buffer): New argument END. Call newline_cache_on_off. If
this buffer's newline cache is enabled, consult it to see if we
need to scan a region for newlines, and store information in the
cache after doing so.
(find_next_newline): Pass new arg to scan_buffer.
(find_before_next_newline): New function.