Add (append) an index entry from an in-memory struct
A new entry will always be inserted into the index;
if the index already contains an entry for the path
in the entry
struct, the old entry will not be
replaced.
A full copy (including the 'path' string) of the given 'source_entry' will be inserted on the index.
0 on success, otherwise an error code