Make move/assign/initialize easier on buffer pointers

should probably read through these:

the name of the feature you’re talking about was called memorystate APIs during the review of SE-184, this is a draft of it but it had major problems so it was dropped from SE-184