Added 'hard' and 'dep_of' attrs + dep_ordered_sources()

source_tree now returns 'dep_of' and 'hard' attrs. Still need to decide
if this is the correct meaning of 'hard' which is still under debate.

Also added experimental dep_ordered_sources() method which attempts to
return source names in dependency order