kmk: untested version of strcache2, lacking rehash. This is a string allocation cache similar to the one found in strcache, except that all the hashing and hashtable code is inlined and tuned. It further allows the user to have as many instances as he wishes as well as associating a value (pointer) with each entry.