[WIP] Making Base.Test more general

Hi all,

So this is the first efforts to make Base.Test more like FactCheck. I'm aiming for incremental change, not revolution. Key design points:

* Tests by default don't immediately throw.
* Test results are stored in global state, to be analyzed at the end.
* Packages can build off Base.Test with extra features, e.g. XML printing.
* Some sensible lessons learned from FactCheck incorporated, including minimal output mode and low memory mode (see @vchuravy's https://github.com/JuliaLang/FactCheck.jl/pull/36)

What I've got now is minimal tinkering I just did on a plane trip that I'd been thinking about for a while. The good thing about this is that the transition path from 0.3 to 0.4 will hopefully be just a matter of either setting the immediate throw option at the start, or doing a more FactCheck-style throw-at-end - i.e. a one line change.