Make settings abbreviate paths when saving config file.

This commit adds three functions

````void fill_pathname_expand_special(char *out_path, const char *in_path, size_t size);````:
This expands the '~' and ':' characters in a path, the code itself was split out of config_get_path.

````void fill_pathname_abbreviate_special(char *out_path, const char *in_path, size_t size);````
This does the opposite of expand_special, that is, it converts a path like "/home/username/dir/dir" to "~/dir/dir".

````void config_set_path(config_file_t *conf, const char *entry, const char *val);````
This functions pushes val through the abbreviate_special, then passes the result on to config_set_string.

settings.c was modified to change calls to config_set_string to config_set_path where appropriate. Also, when copying paths stored as strings in config.def.h, they are passed through fill_pathname_expand_special.

Finally fill_pathname_application_path was updated to return the bundle path on Apple platforms.

These changes are requested to ease path handling on iOS. Whenever an updated package is installed, iOS renames the root directory of the apps sandbox. With these changes, and few more that will be applied to the iOS code, it will be possible to make paths stored in the config persist after the sandbox directory is renamed.