adds c.introduceTopLevel

The first in the family of mutators for the global symbol table,
`introduceTopLevel` is capable of creating synthetic top-level
classes and modules.

The addition of nme.EMPTY_PACKAGE_NAME is necessary to let
programmers insert definitions into the empty package. That's explicitly
discouraged in the docs, but at times might come in handy.

This patch introduce workarounds to avoid incompatibilities with SBT.
First of all SBT doesn't like VirtualFiles having JFile set to null.
Secondly SBT gets confused when someone depends on synthetic files
added by c.introduceTopLevel.

Strictly speaking these problems require changes to SBT, and that will be
done later. However the main target of the patch is paradise/macros,
which needs to be useful immediately, therefore we apply workarounds.
Made Symbol#associatedFile always return non-null

So we don't have to clutter everything with null checks.
SI-6916 makes FlatHashTable#remove a Boolean not Option[A]

Makes FlatHashTable#remove return a boolean instead of Option[A].
Updates HashSet accordingly. Adds a test to make sure remove
works as advertised.
SI-6918 Changes REPL output from "defined module" to "defined object"
Merge pull request #1848 from soc/SI-6918

SI-6918 Changes REPL output from "defined module" to "defined object"
Merge pull request #1847 from JamesIry/SI-6916_master

SI-6916 makes FlatHashTable#remove a Boolean not Option[A]
Merge pull request #1817 from scalamacros/topic/introduce-top-level

adds c.introduceTopLevel