BUG-648: expose copy builders

This patch exposes the ability to have builders pre-seeded from existing
nodes. Also adds the ability to remove children, such that the users can
be simplified.

The end result of this patch is to be able to completely elide copying
data when it's not necessary, e.g. the implementations can choose to
switch to a persistent data structure and optimize the copy away.

Change-Id: I37d3540038bf2cbde8fb4ab456e9eb03f18a66f6
Signed-off-by: Robert Varga <rovarga@cisco.com>