introduce the hindex datastructure

Reviewer: @jnealtowns

The hindex is a datastructure that maps keys to sets of objects. It
assumes that the key is embedded in the object, which is a common pattern
in our code. It is efficient in CPU time, cache usage, and total memory
consumption. The intended use is for database-like "indexes" on particular
fields within objects.

The implementation is an open-addressed hashtable that uses Robin Hood
hashing and splits the hash and value arrays for better cache utilization.

The name comes from the openvswitch datastructure that serves a similar
purpose, but the implementation is not derived from it.

The manually-coded hashtables in OFStateManager have been replaced with
hindexes.