Fix a memcpy / memmove correctness issue found by valgrind.

* subversion/libsvn_subr/prefix_string.c
  (svn_prefix_string__create): use the correct function for overlapping copies

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1532565 13f79535-47bb-0310-9956-ffa450edef68
Add support for read-only access to svn_config_t.  In read-only mode,
concurrent multi-threaded access to the same config data structure is 
safe.

We introduce a simple private API function that allows us to switch
a config struct into r/o mode (one-way as the reversal seems dangerous).
Part of that transition is expanding all values to prevent internal
state change upon later read access.

The code expects r/o structs not to be written to and simply ignores
write ops in release mode.  In debug mode, an assert()ion is triggered.
This is because the existing setter functions don't provide error
return values.

* subversion/libsvn_subr/config_impl.h
  (svn_config_t): add r/o flag to structure

* subversion/include/private/svn_subr_private.h
  (void svn_config__set_read_only): declare new private API function

* subversion/libsvn_subr/config_file.c
  (expand_value,
   expand_values_in_section): new transition utilities
  (svn_config__set_read_only): implement new API

* subversion/libsvn_subr/config.c
  (svn_config_create2): init new flag as well
  (make_string_from_option): assert that this gets never called in r/o mode
  (svn_config_set): in r/o mode no-op in release, assert() in debug

* subversion/libsvn_repos/config_pool.c
  (expand_value,
   expand_values_in_section,
   expand_all_values): drop obsolete functions
  (auto_parse): simply call new API to ensure correct r/o behavior

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1532572 13f79535-47bb-0310-9956-ffa450edef68