runtime: NumericCell => NumericHash in unicode

This was accidentally changed due to a bulk search/replace during an
early renaming of the cell classes. This breaks regenerating the Unicode
data as the generator uses the correct name while UnicodeChar.cpp refers
to the butchered name.
runtime: Update to Unicode 7.0

This allocates a few new characters which we need to track properties
for. This was generated using gen-unicode-data.py with the UCD from
http://www.unicode.org/Public/7.0.0/ucd/
compiler: Unicode data hashing improvements

These improvements reduce the size of the generated Unicode data to
slightly iess than the pre-Unicode 7.0 binary. Final testing was done
with a release amd64 Mac OS X build but similar improvements were seen
on amd64 Linux.

- Use the proper Knuth integer hash function

  We weren't truncating the large integer multiplication to 32bit before
  peforming %. Fixing the hash function to match Knuth's original
  shrinks our hash table size slightly and should hash faster better on
  32bit architectures

- Share hash chains between conversion hash tables

  This is a generic facility but it will only ever be triggered for the
  lowercase and folding conversion tables. They're nearly identical and
  can share nearly all of their chains if the same size is selected for
  both of them. The "smart" hash table sizing below means that should
  always be true if they're already close in size.

- Better Unicode hash table sizing

  Instead of chosing the smallest prime number greater than our input
  size iterate over the hash tables sizes between our input length and
  input length * 1.5. For each size actually calculate the space cost of
  the hash table includng any shared hash chains. Once we're done use
  the largest hash table with the smallest cost.

  This is more computationally intensive for generation but it only adds
  5-10 seconds to the total generation time. However, it drops about
  6KiB off the runtime size and produces better hash tables.