Integration of BN (BigNum) functions.

I've included tests for those functions/methods that are not simple wrappers around their C counterparts.

All functions/methods are checked for errors in their return values and will produce either a BigNum or SslError. However, for those methods which are implemented for traits (e.g. .add(), sub(), etc.), the underlying operation is assumed to have succeeded. Thus, if one of these methods fails, the result will be as if you attempted to unwrap a Result type value.
The man pages say that this takes an `unsigned long` which would correspond to `c_ulong`, not `c_uint`.