Added more things for Nat

- Added `Pow` and `Min` typeclasses, with tests.
- Added factorial (not sure if it is practical, as with current setup it will only calculate factorials for `Nat`s up to `_3`) and gcd examples.