From Objects to Agents: Rebooting Agent-Oriented Programming for Software Development