Negotiation and Argumentation in Multi-Agent Systems