Distributed Behavior Trees for Heterogeneous Robot Teams