Optimal Target Assignment and Path Finding for Teams of Agents