Made Value movable and made the default value container not a unique_ptr which greatly simplifies the interface.