PTG: toPointsToSets - create intersection when given PTSets are not empty

toPointsToSets(S) takes one argument which is PointsToSets reference.
Into this PTSets are normally added points-to pairs from PTG.
This patch changes toPointsToSets behaviour: when S in not empty,
create intersection of S and points-to pairs from PTG, otherwise
behave like before
pts-to: implement the second algorithm

The multiple-run version of algorithm.
Use IDBitsCategory there. When K is given (K is maximal number of variables)
then compute number of runs as log(K). Otherwise run first steengaard's analysis
and from the number of variables compute number of runs (as log(var_no)).
See comments for more info
pts tests: add toPointsToSets tests

test coverting PTG to PointsToSets. Also add new variant of
check function (working with two pt sets)