Aggregate Functions in Disjunctive Logic Programming: Semantics, Complexity, and Implementation in DLV