PERF: upgrade khash lib to 0.2.8
This should close #8524.

The idea is that quadratic probing `(i**2 + i)/2` is faster than double hashing and can be shown to traverse all elements if `nbuckets == 2**N`.

This branch compiles and passes tests, but I haven't done any benchmarks yet.
## TODO

(probably in other issues)
- [ ] see if the "flag compression" hack can be removed, it complicates syncing and
  I'm not sure if there was any noticeable performance increase
- [x] request upstream klib maintainers to add a way to override "kh_inline",
  e.g. by wrapping its definition with `#ifndef kh_inline`, so that
  `PANDAS_INLINE` flag can be moved away from khash.h and specified in
  `khash_python.h" with

``` c
#define kh_inline PANDAS_INLINE
#include "khash.h"
```
- [ ] I don't like it that pandas makes `khint64_t` definition signed. In
  upstream it is unsigned which -- I agree -- is inconsistent, but bit shifting
  operations on signed integers have a) undefined behaviour according to the
  standard and b) different semantics which might cause performance degradation
  on some hash functions:

``` c
int main(int argc, char *argv[])
{
  int64_t foo = -1;
  uint64_t ufoo = *((uint64_t*)&foo);
  printf("foo: %lx; foo>>1: %lx\n", foo, foo >> 1);
  printf("ufoo: %lx; ufoo>>1: %lx\n", ufoo, ufoo >> 1);
  return 0;
}
```

```
$ ./a.out 
foo: ffffffffffffffff; foo>>1: ffffffffffffffff
ufoo: ffffffffffffffff; ufoo>>1: 7fffffffffffffff
```
- [ ] memory allocation functions `kmalloc/krealloc/kfree` should be overridden to
  use PyMem interface to be shown in tracemalloc output.  `PyMem_Calloc` is
  [only provided for 3.5](http://bugs.python.org/issue21233), so it may require more work than just defining a macro
  rename.
- [ ] khash-0.2.8 API introduces `-1` return values for operations that have failed,
  most likely because of memory allocation errors. these should be handled and
  reported as `MemoryError`s to the interpreter
