Tease out complex/stateful reporting from Run.

Next step: move Reporting out of Global.scala and make reporting configurable.

WIP: this breaks run/macro-parse-position-malformed
need to make currentRun.incompleteHandler overridable in
```
package scala.reflect.macros
package contexts

import scala.tools.nsc.reporters.StoreReporter

trait Parsers {
  self: Context =>
  import global._

  def parse(code: String) = {
    val sreporter = new StoreReporter()
    val unit = new CompilationUnit(newSourceFile(code, "<macro>")) { override def reporter = sreporter }

```

Move reporting logic into Reporting trait

This stuff does not belong in Global/SymbolTable.
Should do the same for debugging/logging.

In the process, I slightly changed the behavior of
globalError in reflect.internal.SymbolTable.
It used to abort, but I don't think that's a good idea.
I couldn't find any call-sites for it (it was overridden in Global),
so I hope this is ok.

WIP: Provide necessary hooks for scala.reflect.macros.Parsers#parse.

this fixes the test broken in "Tease out complex/stateful reporting from Run.",
but not happy with the design

Conflicts:
	src/compiler/scala/tools/nsc/CompilationUnits.scala
	src/compiler/scala/tools/nsc/Global.scala

Don't pop empty macro context stack.

Ran into this while reworking -Xfatal-warnings logic.

fatalwarn