minor update of hypot to ensure consistency of output types

hypot and atan2 are two important binary math functions. 

This patch serves two purposes:
- Originally, the hypot methods were separated in two places. Now I moved them together.
- To ensure that ``hypot`` and ``atan2`` have the same output type behavior. (e.g. Originally, ``hypot`` outputs ``Float64`` when inputs are ``Int8``, while ``atan2`` outputs ``Float32``. Now they do the same). This is a very minor thing, but I found it annoying when I am writing a generic numerical computation framework.