[util][math] fix return type for math::sqrt; fix implementation
for sqrt for non-fundamental types (use the using mechanism);
[test][util] add unit test for math::sqrt