Use hash path lookup vs path finding
Use hash path lookup vs path finding

When creating a fake symlink to a path just use
hash lookup via `fetch_node` and handle that failing
if the destination nodes does not exist vs. fetching the
parent and linear searching for the existing target
node (which gets slower as the parent node gets
more children).

This makes the preparing code using the little speed
test helper on my not-very-fast box change to be the
following:

Old (preparing) - Took 29.724 seconds to run

New (preparing) - Took 21.343 seconds to run

Part of ongoing blueprint make-things-speedy

Change-Id: I608b90ae58b4e4b6724b7f1bb8faebd118a1ec79

jimbobhickville/taskflow,openstack/taskflow,jimbobhickville/taskflow,junneyang/taskflow,pombredanne/taskflow-1,openstack/taskflow,pombredanne/taskflow-1,junneyang/taskflow