Make errors human readable

Change error messages from numeric codes to human readable strings. This makes debugging failures much easier, as well as more google-able.

I just took a first pass at making this change last night while debugging a failure coming from `rust-http` when attempting to perform a `https` GET request on `static.rust-lang.org`. I will also be submitting a PR to fix the broken behavior there.

I'm not sure if there is a better or more complete way to do this but review is very much welcome!
I think this should be remove:

- it isn't directly related to errors handling

- it is already fixed in upstream anyway