Smartly update the display array to minimize redraw cost.

 * Maintain a history of the old tree row object so they can be reused.
 * Reusing previous row objects maintains object equality and tricks angular into not updating the row.
 * Row ids now also contain the link id.
 * Add IDs to all links