Observer-based adaptive containment control for multi-agent systems with nonlinear dynamics under directed graphs