Rename 'stack' to 'queue' in BFS for clarity
Add ancestor and descendant functions for DAGs

Ancestors are all nodes from which you can reach the source node.
Descendants are all nodes reachable from the source node. Both are
defined only in DAGs.
Make check for DAG optional in descendants algo

When searching for descendants many times, it is cumbersome to check
each time whether the graph is a DAG. Therefore, this check can now
be disabled by a keyword argument.
Improve performance of descendants and ancestors

The `descendants` function for DAGs was slow because it performed a
check of whether the input graph was a DAG. This is now off by default.

In addition, the inverse function, `ancestors`, would previously
reverse the entire graph to find ancestors using BFS. A modification
to the `bfs_edges()` function allows reversing the BFS itself, avoiding
the cost of the full graph reversal.
Refactor functions to use faster nx.shortest_path_length
Merge branch 'master' into jni-ancestors

Conflicts:
	networkx/algorithms/traversal/breadth_first_search.py

Resolve conflict introduced by #772.