Create Power trait

The patch adds a Power trait that can be implemented by all types
implementing the `Mul` and `Clone` trait.

The patch also renames f32 and f64 pow into powf in order to still have
a way to easily have float powers. It uses llvms intrinsics.

The pow implementation for all num types uses the exponentiation by
square.

Fixes bug #11499
Single loop version of the algorithm