BUG: fix reverse comparison operations for Categorical

By the time the comparison gets dispatched to _cat_compare_op, the first
argument becomes zerodim array and no longer passes isscalar test.

ENH: add pd.lib.unbox_if_zerodim to extract values from zerodim arrays

ENH: make pd.lib.isscalar detect pd.Period, datetime.date and datetime.time