move recursive_unserialize_replace() into Search_Replace_Command class

it's not meant to be a general-purpose utility; it's behaviour changes
according to the needs of the search-replace command