Components and properties must only have one parent

Right now the parent property is not reliably set. We should change this. One downside to this patch is that the removeAll* methods need to go through all objects to unset the parent. I don't see a good solution to this and I hope this doesn't impact performance too much.