This will enable using it in rhg too.
The OwningDirstateMap::new_empty constructor is generic and accepts a value
of any type that gives acces to a bytes buffer. That buffer must stay valid
as long as the value hasn’t been dropped, and must keep its memory address
even if the value is moved. The StableDeref marker trait encodes those
constraints. Previously no trait was needed because the value was always
of type PyBytes which we know satisfies those constraints.
The buffer type is ereased in the struct itself through boxing and
dynamic dispatch, in order to simplify other signatures that mention
OwningDirstateMap.