- Store EVP_MD_CTX in a separate struct.
- Add with_context() constructor that uses an existing context.
- Switch to EVP_Digest(Init|Final)_ex for efficient context reuse.
- Make update() borrow &mut self.
- Make finalize() consume self. Add finalize_reuse() that also returns the
context which can be passed to from_context() constructor for reuse.
These changes let the type system prevent illegal calls to update() and
finalize().
`libcrypto` uses locks quite intensively even without SSL.
So they should be initialized before everything else to
function properly in multi-threaded apps in which SSL
operations are absent or delayed.
Finishes #79