Fix concurrent safety issues in reloadable config.

Because parse_config_file automatically created a new configuration, the
configuration would be active before it was applied. If other threads
could read a not-fully-applied configuration, the state of the system
would be ruined.

This fixes the problem by making parse_config_file return the
configuration it creates and making the reconfigure process responsible
for replacing the configuration. This is finally safe.