Add enhanced unittest support

As discussed in the newsgroup this reboots https://github.com/D-Programming-Language/druntime/pull/308
and  https://github.com/D-Programming-Language/dmd/pull/1131

Ping @andralex
This provides enough to run unittests separately and in different threads, no support for naming tests yet. @andralex what's the preferred syntax for that?

### Detailed description ###

The new information is available from the ```unitTests``` member of every ModuleInfo.
```unitTests``` is an array of ```__UnitTest``` structs. The ```__UnitTest``` struct provides the unittest function, location, etc.

#### Example ####
```d
bool tester()
{
    import std.stdio;
    //iterate all modules
    foreach(info; ModuleInfo)
    {
        //iterate unit test in modules
        foreach(test; info.unitTests)
        {
            //access unittest information
            writefln("ver=%s file=%s:%s disabled=%s func=%s", test.ver, test.file, test.line, test.disabled, test.func);
            //execute unittest
            test.func();
        }
    }
    return true;
}

shared static this()
{
    Runtime.moduleUnitTester = &tester;
}
```

#### Example test runners ####
Simple example: http://dpaste.dzfl.pl/56697348500c
Output: http://dpaste.dzfl.pl/c0c706b0cea4

Parallel runner: http://dpaste.dzfl.pl/cef0a42936d6
Output: http://dpaste.dzfl.pl/d2445d87a9d7

### Available information ###
The following information is emitted for every unittest:
*  ```void function() func```. Call it, pass it to another thread, disassemble, ...
*  ```string file```: file name. nice for IDE cause not all unittests always belong to the module (for example, importing ```std.stdio``` imports two unittests from ```std.format```)
* ```uint line```: line of test declaration. For IDE
* ```bool disabled``` true if test is marked ```@disable```. (This can be removed if it's controversial)