Certificate/pkey generation & PEM export

Required quite a lot of refactoring
Merge pull request #55 from cjcole/master

Additions and one bug fix (BN_mod_inverse).
Addressed review comments

- fixed invalid file permissions

- removed redundand mem::transmute

- removed outdated FIXME's

- removed redundand temporary variable

- removed macro_export for internal macros
Merge pull request #53 from vhbit/cert-gen

Certificate/PKey generation & PEM export
single `ffi` module
Merge pull request #56 from vhbit/single-ffi

Single `ffi` module
Fixed mut_null deprecation warnings
Unification and explicity in FFI type decls
Merge pull request #57 from vhbit/mut-cleanup

Clean up of mut/const types in `ffi` and also `mut_null` -> `null_mut`
Add bindings to CRYPTO_memcmp

This should help other projects use a constant-time memory comparison.
Merge pull request #61 from alexcrichton/memcmp

Add bindings to CRYPTO_memcmp
User-provided data in verify
Simpler setter for verify with data

There is no need in wrapping function in option as there is no
sense in providing data without function.
Add a dummy bn_is_zero C dependency to wrap BN_is_zero

This is necessary because on some architectures BN_is_zero
is a CPP macro, so trying to link against it in an `extern "C"`
block causes a linker error.

This also introduces a build command to Cargo to compile
the bn_is_zero wrapper.
Merge pull request #58 from vhbit/verify-data

User-provided data in verify
Merge pull request #64 from reem/fix/big-num-is-zero

Add a dummy bn_is_zero C dependency to wrap BN_is_zero
Changes made to support 0.12.0-dev ( October 2, 2014 )
Clean up warnings
Make errors human readable

Change error messages from numeric codes to human readable strings. This makes debugging failures much easier.
Address CR comments and add a test