BUG: reindexing a frame fails to pick nan values

currently

    >>> df = pd.DataFrame([[1, 2], [3, 5], [7, 11], [9, 23]],
    ...         index=[2, np.nan, 1, 5], columns=['joe', 'jim'])
    >>> df
         joe  jim
     2     1    2
    NaN    3    5
     1     7   11
     5     9   23
    >>> df.reindex([2, np.nan, 1])
         joe  jim
     2     1    2
    NaN  NaN  NaN
     1     7   11
with this patch:

    >>> df.reindex([2, np.nan, 1])
         joe  jim
     2     1    2
    NaN    3    5
     1     7   11
    >>> df.reindex([np.nan, 5, 5, np.nan, 1, 2, np.nan])
         joe  jim
    NaN    3    5
     5     9   23
     5     9   23
    NaN    3    5
     1     7   11
     2     1    2
    NaN    3    5

looking at how `__hash_equal` is used in `khash.h`, this  macro definition does not recalculate a value twice.
also, since `b` is fixed inside the loop, it may be faster to check for `(b) != (b)` first.