Fix division by zero failure in Mpq

It was failing when the numerator was zero, rather than the denominator.
It is recommended to ignore Cargo.lock for libraries

See https://github.com/rust-lang/cargo/issues/315.
Fix [[lib]] to [lib] deprecation warning
Fix ToStrRadix and str.to_owned() deprecations

Sadly there doesn't seem to be a replacement for ToStrRadix on user
types at the moment. See: https://github.com/rust-lang/rust/issues/18301
don't use globs for tests

This makes the tests compile again and is better style.
(It did not compile because of "conflicting types" due to the globbed
import. Unfortunately the compilers error messages are not very helpful.
Using explicit imports fixes this.)

Fixes #7.
mpz: implement `powm`
mpz: implement `sqrt` and `root`
mpz: implement `gcdext`
mpz: implement `nextprime`
mpz: implement `pow`
mpz: implement `Hash`

For this, we need to make assumptions about the size of a GMP limb.
Currently the size is assumed to be that of a `uint`. This assumption is
verified by a test.

However, GMP provides `__gmp_bits_per_limb` that could be used to
reliably determine the correct type at compile time.  Alternatively the
corresponding type could be imported via FFI (if Rust supported it).
Implement ToPrimitive for Mpz
Expose millerrabin primality testing
Fix a bad test
add the license file

Closes #9