Programming Agent-Based Models by Demonstration