Change heap representation to be more amenable to serialization

- Store is now a pair of ((hashof address value), address)
- The address stored always represents the next address to allocate at
- Two helpers, alloc and update, provide the abstract interface to putting new
  locations on and updating existing locations
- method.rkt isn't used anywhere, and I removed it to avoid refactoring its
  allocations.