Extend not replace existing children

Currently, if I do ```var currentChild = parents[currentChildID]; ```, the binding between currentChild and parents[currentChildID] is lost whenever the child at currentChildID is updated, because it's value is simply being overwritten (creating a new object).  This change fixes that, keeping all references in sync throughout the app.