virsh: Fix session manager in virsh.

In current code, VirshPersistent.__del__() will never be called in
`del virshPersistent_instance`
Because there are some other references to this object.
They are VirshClosure object. The VirshClosure.dict_like_instance is a
reference to VirshPersistent object. So, we can't use the del feature
of VirshPersistent at all.
So every test using VirshPersistent object will remain a virsh process
after exiting.

This patch fix this problem.
(1). Change the dict_like_instance in VirshClosure from the reference of
Virsh object to another object named closure_args stored in VirshPersistent.
And we update the closure_args in setting slots of VirshPersistent to keep
the closure_args and VirshPersistent in-sync.
(2). Fix an error of exit. There is no method named exit in Virsh class,
So super().__exit__ in VirshPersistent will down.
(3). Add a param named auto_close into __init__ method of VirshSession. The default
value of this param is False, and it will not close the ShellSession when we derefer it.
So, I add this param to allow user pass a auto_close=True to use it more convinient.
(4). Introduce a class variable named COUNTERS in VirshPersistent. COUNTERS is a
dict whose key is a_id and value is counter. Two method counter_increase and
counter_decrease introduced in VirshPersistent at the same time. B/c VirshSession is
not auto closed, then we need to manage the VirshSession in VirshPersistent.

Signed-off-by: yangdongsheng <yangds.fnst@cn.fujitsu.com>
Add unittest for session manager in virsh.

* test_del_VirshPersistent to make sure __del__ method works well.
* test_VirshSession to make sure VirshSession works well without virshPersistent.
* test_VirshPersistent to make sure COUNTERS in VirshPersistent works well.

Signed-off-by: yangdongsheng <yangds.fnst@cn.fujitsu.com>