New utils function to get relative path from one directory to another

This is used by the patch that writes relative paths to the project
file. I put it to utils because I use it in gproject as well and
might be useful for others.
Use relative paths in addition to absolute paths in project files

Right now projects cannot be moved to other directories without
losing the list of open files. This makes the project unportable to different
machines because even if the directory structure under your home is
identical, the user name can be different so the paths are different too.

Both absolute and relative paths have their advantages and disadvantages.
Instead of replacing absolute paths with relative paths, this patch
adds one more item into the configuration file for every path. This item
contains a relative paths so both absolute and relative
paths are stored for every file and base path. When the project is read,
first the absolute paths are checked. When the file is not found,
relative paths are used to search for the file. This makes this
implementation backward and also forward compatible with older versions
of project files and geany applications.

For the global session file only absolute paths are used because it is
not expected that this file is moved between directories.
Make app->project->base_path always absolute

Because app->project->base_path can be relative, its direct use
leads to resolving the directory which is relative to the directory
where Geany was started instead of the project directory. Making it
always absolute fixes the problem. The original path is stored under
GeanyProjectPrivate.

In addition, get rid of project_get_base_path() which is not needed now.
Don't show files which don't exist in the recents list

It doesn't make much sense to keep non-existing files in the recent file
and project list. Renaming a project directory for instance leaves the old
project paths in the recent project list forever.
Disable current project in recent project files

Nobody wants to open the project which is already open. This however
happens quite often by accident (which closes the project and reloads
it again).

(Keeping recent files in the list makes sense for open files because it
just switches to right tab.)