Add or update an index entry from an in-memory struct
If a previous index entry exists that has the same path and stage as the given 'source_entry', it will be replaced. Otherwise, the 'source_entry' will be added.
A full copy (including the 'path' string) of the given 'source_entry' will be inserted on the index.
0 or an error code