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.
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