* use external rng instead of nimcrypto
allows passing in different RNG's to generate keys
* pass in array of random data to random keygen function
* back to a proc
* docs
* gcsafe rng callback needed
* introduce foolproofrng that can't fail
* silence compiler warning
* hint at random not being good enough in defect
* use requiredInit
Use requiredInit on keys - this simplifies error handling by providing
more compile-time guarantees through type.
Loophole: `clear` will leave an invalid key type in memory, not
guaranteed by type - it requires an explicit action to produce, so it's
somewhat better than the current situation where by default, keys are
invalid, but it's not watertight.
something like a `sink` would be needed which would have to guarantee
that `clear` is the last use of the instance.
* close requiresinit loophole
* remove clear for public stuff
* fix side effects
`secp256k1_context_no_precomp` is constant actually
* document nosideeffect
* document nosideeffect
* document fix