Certificate/PKey generation & PEM export

Notes:

* required a lot of restructuring and one of the questions if there is any particular reason (except of historical) for every module to declare it's own `ffi` submodule? I would like to combine them in one huge shared `ffi` which will be accessible from all modules without a lot of boilerplate. 

* there are a couple of FIXME's left which I'll address one-by-one, the primary reason for early PR is to get as flawless merge as possible considering how many project structure changes are in and potential other PRs.
You can change this to `mut self` and avoid the `let mut t = self` line.