Using `Path`s instead of plain strings

Refs #45
Potential fix for #68
Merge pull request #69 from vhbit/bn-zero-fix

Fixes #68: error on linking `bn_is_zero`
Merge pull request #71 from vhbit/path-ization

Using `Path`s instead of plain strings
Fixed incorrect EOF handling in MemBio, added error description

Actually, EOF wasn't handled at all and it caused `mem_bio.read_to_end()` to fail. Which in turn failed all `write_pem` implementations.
Merge pull request #67 from vhbit/membio-eof

Fixed incorrect EOF handling in MemBio, added error description
Merge pull request #66 from jroesch/fix-failing-test

Fix #65: failing test case
Revert "Fix #65: failing test case"
Merge pull request #72 from sfackler/revert-66-fix-failing-test

Revert "Fix #65: failing test case"
Minor doc fixes and feature mentions
Merge pull request #73 from vhbit/minor-doc-fixes

Minor doc fixes and feature mentions
X509 Generator sample

Forcing static linking for lib wrapped as in other case doc tests
fail to locate the static library
Merge pull request #74 from vhbit/doc-samples

X509 Generator sample
"final" is now a reserved word, so change occurrences to "finalize".
BN_is_zero as a Rust function

Although wrapping was relatively easy it basically meant
that we depend on C compilation which becomes nightmare
as soon as multiple platforms are used. I’ve got a huge pain
once iOS was involved with 3 device archs and 2 simulator 
arches to support, not mentioning different set of include 
and lib flags.

So there are 2 different approaches:

- continue this way, maintaining all compilation issues like
  like managing correct flags, providing correct paths and so
  on. This way our Makefile will grow extremely fast and will
  actually take more efforts to maintain.

- doing it pure Rust way. In this case we provide all the 
  macros expansions inside our wrappers and there should be
  no other way to access raw data other than through those 
  wrappers. It might be fragile if OpenSSL internal data 
  structures will ever change, but I think (or hope) it is 
  pretty stable and wouldn’t change anytime soon.

This PR eliminates `BN_is_zero` at all from public API. It’s
functionality is implemented in `BigNum.is_zero` and should 
be enough. 

Additional notes:

1. I’ve moved BIGNUM into `bn` so it could access fields
   directly and keep it as an opaque structure for everyone 
   else

2. I’ve kept empty Makefile as I hope to land `feature-matrix`
   branch soon and I don’t like merging deleted/added file 
   conflicts.
Merge pull request #76 from vhbit/bn-zero-int

BN_is_zero as a Rust function
Merge pull request #75 from kinghajj/change-final-to-finalize

"final" is now a reserved word, so change occurrences to "finalize".
Prepare for s/static/const/
Merge pull request #78 from alexcrichton/update

Prepare for s/static/const/
Feature matrix & conditioned doc generation

- Ensures that library builds and passes all tests without any
  features and with `tlsv1_1`, `tlsv1_2` features enabled. Note, 
  that `sslv2` isn’t in test case because on modern linux (like 
  on Travis servers) `SSLv2_method` isn’t in `libssl.so` so it
  builds fine but fails on linking tests.

- For simplification it generates docs after every build, but 
  uploads them once - if it is `master` branch and not a pull
  request.