message: Allow allocating a value into an OwnedFrozenValue
diff: use crate::{
  environment::Module,
  - values::{FrozenHeap, FrozenHeapRef, FrozenValue, Value},
  + values::{AllocFrozenValue, FrozenHeap, FrozenHeapRef, FrozenValue, Value},
  };
  use gazebo::prelude::*;
  use std::{fmt, fmt::Display};
  @@ -47,6 +47,13 @@ impl OwnedFrozenValue {
  Self { owner, value }
  }
  + /// Create an [`OwnedFrozenValue`] pointing at a new heap.
  + pub fn alloc(x: impl AllocFrozenValue) -> Self {
  + let heap = FrozenHeap::new();
  + let val = heap.alloc(x);
  + Self::new(heap.into_ref(), val)
  + }
  +
  /// Extract a `FrozenValue` by passing the heap which will use it.
  /// Unsafe if you pass the wrong heap.
  pub fn owned_frozen_value(&self, heap: &FrozenHeap) -> FrozenValue {
  