Efficiently Answering Reachability Queries on Large, Dynamic Graphs