functional tests: Refactored, made automatic test discovery

Introduced SyslogNGTestCase class.
This is more than a test group, instead of a single testcase. It can encapsulate more test cases,
with a single config, or environment. The testcase works the following way:

if not checkRunnable():
   stop
initialize()
for each test cases:
    setUp()
    run test case
    tearDown()
deinitialize()

You can override any of the mentioned hooks (marked with () at the end of them),
but you have to call the parent's class hook first.

Syslog-ng stop and start now part of the testcase. If you want ot use the old functionality,
you can still use SyslogNGOldTest as your base class, so syslog-ng start and stop
automatically happens in setUp and tearDown hooks.
Functional tests now able to count success and failures.
Added exception handling and printing for testcases (setUp and tearDown, too).
Testcase can be skipped, if not eligible for running. You can override the checkRunnable
function of a testcase, to do so.