Magic Sets for Disjunctive Datalog Programs