Signature verification, fix keypair constructor, cleanup.

I'm not an expert in these matters, but I think std::move is not necessary here, because the compiler does return-value-optimization anyway.