libtracker-miner: Ensure that the async function uses owned data

... and simplify parent directory tracking.

The GFileEnumerator keeps a reference to the directory that is being
traversed, so we don't need to keep track of it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=737768
libtracker-miner: Keep the crawler alive across async calls

The EnumeratorData held a reference to TrackerCrawler while
enumerating. Just before closing the enumerator we destroy the
EnumeratorData and drop the reference. This can lead to TrackerCrawler
getting destroyed.

To prevent this, grab a new reference before dropping the older one
and keep it till the asynchronous call is alive.

https://bugzilla.gnome.org/show_bug.cgi?id=737769