Adding a new OPAL hash table routine. Please read the algorithm descript...

...ion in opal/class/opal_hash_table.c for more precise details on the design and implementation. This algorithm was contributed by David Linden of H.P. in partnership with Mellanox Technologies. This contribution achieves two objectives:

1. It's actually hashing now, whereas the old OPAL hash table was not. Thus, it is a bug fix and, as such, should be included in the 1.8 series.

2. It is dynamic and can grow and shrink the number of buckets in accordance with job size, whereas the old OPAL hash table had a fixed number of buckets which resulted in poor retrieval performance at large scale.

This scheme has been deployed in the field on very large H.P./Mellanox systems and has been demonstrated to significantly decrease job start-up time (~ 20% improvement) when launching applications directly with srun in SLURM environments. However, neither SLURM nor direct launch are prerequisites to take advantage of this change as any entity that utilizes OPAL hash table objects can benefit (at least partially) from this contribution.
In the future, please refrain from gratuitious white space changes like this in a commit with other code changes.

To be clear: fixing whitespace problems is always appreciated, but please put them in separate commits that are obviously labeled as "whitespace cleanup only; no code changes" (or something like that).

Thanks!