Fix a long-standing memory leak in account prefs.
All P_STRING type prefs with non-NULL default values
were being leaked due to overly complicated account
config loading, where we would first initialize
a fresh PrefAccount, then load prefs from config, copying
data between the static tmp_ac_prefs and our dynamically
allocated PrefAccount several times.
Instead of adding another round of data copying from/to
tmp_ac_prefs for purpose of free()ing the P_STRING prefs,
this commit changes prefs_account_read_config() into
prefs_account_new_from_config(), a
Existing accounts are now created with simple:
ac_prefs = prefs_account_new_from_config(...);
instead of previous:
ac_prefs = prefs_account_new();
prefs_account_read_from_config(ac_prefs, ...);
The new function sets up contents of tmp_ac_prefs,
and then its contents are only copied to the newly
allocated PrefsAccount once.