core: add Pow trait

This adjusts core::num::pow() to require implementations of the Pow
trait, where as before any `One + Mul` could be accepted.

The Pow trait provides a default implementation based, and is
implemented on the standard numeric types. Implementations were not
provided for BigUint and friends, since they could benefit from
specialized functions.

[breaking-change]