various things

These should have been in feature branches.
Changes are for:
* cleanup
* API alignment with go crypto/...
* behavior alignment with go crypto/...
* more error information
* less panic()