Hooray for unique_ptr!

Changed GUIControl to use unique_ptr instances instead of shared_ptr for
children; this makes far more sense since you don't want ownership of a
child to be shared! Only tradeoff is that calling is a bit more
cumbersome (having to use std::move) but that's not so bad as it makes
things more explicit.