@!visibility private
@param [String] name @param [Object] payload @param [Array<String>] parent_names @param [Object] requirement the requirement that is requiring the child @return [void]
Detaches the {#vertex_named} ‘name` {Vertex} from the graph, recursively removing any non-root vertices that were orphaned in the process @param [String] name @return [Array<Vertex>] the vertices which have been detached
@param [String] name @return [Vertex,nil] the root vertex with the given name
Removes a possibility from ‘self` @return [PossibilityState] a state with a single possibility,
the possibility that was removed from `self`