Emit run summary at the end

Sometimes there is zero testcases to be executed on testnodes, and
log output from nxdtest is just

    date:   Wed, 10 Nov 2021 12:31:50 MSK
    xnode:  kirr@deca.navytux.spb.ru
    uname:  Linux deca 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
    cpu:    Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz

it is not clear from such output did the run ended or the test got
stuck. After this patch it becomes

    date:   Wed, 10 Nov 2021 12:31:50 MSK
    xnode:  kirr@deca.navytux.spb.ru
    uname:  Linux deca 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
    cpu:    Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz
    # ran 0 test cases.

And in general, when there are several testcases to be run, it is helpful to
indicate end of such run and to print brief summary of result status for all
ran test cases. Example output:

    wendelin.core$ nxdtest -k test.wcfs
    date:   Wed, 10 Nov 2021 12:35:34 MSK
    xnode:  kirr@deca.navytux.spb.ru
    uname:  Linux deca 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64
    cpu:    Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz
    >>> test.wcfs/fs:1
    ...
    ok      test.wcfs/fs:1  25.035s # 35t 0e 0f 0s

    >>> test.wcfs/fs:2
    ...
    ok      test.wcfs/fs:2  21.033s # 35t 0e 0f 0s

    >>> test.wcfs/fs:
    ...
    ok      test.wcfs/fs:   21.056s # 35t 0e 0f 0s
    # ran 3 test cases:  3·ok

/reviewed-by @jerome
/reviewed-on !12
85 jobs for master in 0 seconds (queued for 1 second)
Status Job ID Name Coverage
  External
passed nxdtest.UnitTest-Master.Python2

00:35:52

passed nxdtest.UnitTest-Master.Python3

01:30:56

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:53

passed nxdtest.UnitTest-Master.Python2

00:00:32

passed nxdtest.UnitTest-Master.Python2

00:00:32

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:37

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:28:22

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:31:09

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:42

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:36

passed nxdtest.UnitTest-Master.Python2

00:00:37

passed nxdtest.UnitTest-Master.Python2

00:00:32

passed nxdtest.UnitTest-Master.Python2

00:00:41

passed nxdtest.UnitTest-Master.Python2

00:00:40

passed nxdtest.UnitTest-Master.Python2

00:00:32

passed nxdtest.UnitTest-Master.Python2

00:01:58

passed nxdtest.UnitTest-Master.Python2

00:00:42

passed nxdtest.UnitTest-Master.Python2

00:00:47

passed nxdtest.UnitTest-Master.Python2

00:00:38

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:23

passed nxdtest.UnitTest-Master.Python2

00:00:36

passed nxdtest.UnitTest-Master.Python2

00:00:40

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:38

passed nxdtest.UnitTest-Master.Python2

00:00:51

passed nxdtest.UnitTest-Master.Python2

03:35:11

passed nxdtest.UnitTest-Master.Python2

00:41:38

passed nxdtest.UnitTest-Master.Python2

00:00:49

passed nxdtest.UnitTest-Master.Python2

00:00:36

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:34

passed nxdtest.UnitTest-Master.Python2

00:00:38

passed nxdtest.UnitTest-Master.Python2

00:40:37

passed nxdtest.UnitTest-Master.Python2

00:00:33

passed nxdtest.UnitTest-Master.Python2

00:00:36

passed nxdtest.UnitTest-Master.Python3

02:59:27

passed nxdtest.UnitTest-Master.Python3

00:00:42

passed nxdtest.UnitTest-Master.Python3

00:02:13

passed nxdtest.UnitTest-Master.Python3

00:00:58

passed nxdtest.UnitTest-Master.Python3

00:00:35

passed nxdtest.UnitTest-Master.Python3

00:00:37

passed nxdtest.UnitTest-Master.Python3

00:00:36

passed nxdtest.UnitTest-Master.Python3

00:00:51

passed nxdtest.UnitTest-Master.Python3

00:01:43

passed nxdtest.UnitTest-Master.Python3

00:00:38

passed nxdtest.UnitTest-Master.Python3

00:00:37

passed nxdtest.UnitTest-Master.Python3

00:00:48

passed nxdtest.UnitTest-Master.Python3

00:00:33

passed nxdtest.UnitTest-Master.Python3

00:00:34

passed nxdtest.UnitTest-Master.Python3

01:21:34

passed nxdtest.UnitTest-Master.Python3

00:00:39

passed nxdtest.UnitTest-Master.Python3

00:00:40

passed nxdtest.UnitTest-Master.Python3

00:00:39

passed nxdtest.UnitTest-Master.Python3

00:00:54

passed nxdtest.UnitTest-Master.Python3

00:00:34

passed nxdtest.UnitTest-Master.Python3

00:00:40

passed nxdtest.UnitTest-Master.Python3

00:00:42

passed nxdtest.UnitTest-Master.Python3

00:00:34

passed nxdtest.UnitTest-Master.Python3

00:00:35

passed nxdtest.UnitTest-Master.Python3

00:00:49

passed nxdtest.UnitTest-Master.Python3

00:00:40

passed nxdtest.UnitTest-Master.Python3

01:15:52

passed nxdtest.UnitTest-Master.Python3

00:00:38

passed nxdtest.UnitTest-Master.Python3

00:00:50

passed nxdtest.UnitTest-Master.Python3

00:00:38

passed nxdtest.UnitTest-Master.Python3

00:01:00

passed nxdtest.UnitTest-Master.Python3

00:01:07

passed nxdtest.UnitTest-Master.Python3

00:01:03

passed nxdtest.UnitTest-Master.Python3

03:00:03

passed nxdtest.UnitTest-Master.Python3

00:00:31

passed nxdtest.UnitTest-Master.Python3

02:21:43

passed nxdtest.UnitTest-Master.Python3

00:00:41

passed nxdtest.UnitTest-Master.Python3

00:01:03

passed nxdtest.UnitTest-Master.Python3

00:00:31