* Add JUnit notifier.
1. Add timestamp to all notifier messages.
2. Add stacktrace to test result failure messages.
3. On test result messages, report relative function name (in addition to the fully
qualified name), and fully qualified test suite name.
4. Add a new notifier type for outputting test results in the JUnit format.
The original design is to plan needed environments for test cases. It
doesn't create the environment candidate, if it looks not necessary. But
as practice, it means to plan it twice. One is to merge equaled
environments, the second is in the real run. It's hard to have
consistent algorithm. So remove the calculation on merging. Each test
result has a candidate, the extra environment won't be deployed.
In some complex combination of test cases, which needs new_env and early
deployment phase, they may be put into the same environments, but
returned later. The extra environments will be deleted in the period,
so the test results cannot be run. With this change, the not deployed
environments won't be deleted until the whole runner completed.