Parameter checking and filling in TODOs

Here are corrected parameters and type checking as far as I can discern them.

I tried unit testing some of the other `*_request` methods, but they need real crypto examples.
I was thinking of extracting the calls to crypto into another module (maybe `acme_crypto` or into `crypto_util`), and making `acme.py` strictly about generating compliant api calls. Thoughts?