rewrite is_comparable to workround vc bug

It seems that vc's decltype always return bool in the old implementation
regardless whether T and U is comparable.