add tr1_result_of that always behaves as TR1 specifies, fix Boost.TR1's result_of to use tr1_result_of