SI-6908 Makes FlatHashTable as well as derived classes support null values

This change adds a null sentinel object which is used to indicate that a null
value has been inserted in FlatHashTable. It also makes a strong distinction
between logical elements of the Set vs entries in the hash table. Changes
are made to mutable.HashSet and ParHashSet accordingly.
SI-6908 Removes cannotStoreNull from FastHashSet/HashSet docs

In my main commit I missed the scala doc annotation about not
being able to store null.
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-6908 Cleanup of FlatHashTable nulls based on review

Uses pattern matching in findEntry instead of an if.
Uses a named object NullSentinel instead of a val.\
Makes NullSentinel private.
Uses isInstanceOf instead of equality on NullSentinel.
Makes searchEntry a val instead of a var.
Merge pull request #1839 from JamesIry/SI-6908_master

SI-6908 Makes FlatHashTable as well as derived classes support nulls
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
catching up