VerifyingKeys when alloc enabled (#1346)
Adds an `alloc`-gated `verifying_key` field to `SigningKey`, and when the feature is enabled precomputes the key at the time the `SigningKey` is initialized. We previously used to do this but stopped to optimize stack usage (see the changes in #1259 and #1261), however when `alloc` is enabled this isn't an issue since we've moved the relevant data to the heap in this case (see #1344 and #1345), so stack usage is no longer an issue. This makes it possible to implement `signature::KeypairRef` for `SigningKey` which still provides a blanket `signature::Keypair` impl, so we can always depend on the latter being availble but take advantage of the former when `alloc` is enabled.
RustCrypto: Signatures

Support for digital signatures, which provide authentication of data using public-key cryptography.
All algorithms reside in the separate crates and implemented using traits from
the signature crate.
Crates are designed so they do not require the standard library (i.e. no_std)
and can be easily used for bare-metal or lightweight WebAssembly programming.
Crates
NOTE: for RSA signatures see https://github.com/RustCrypto/RSA
Usage
Crates functionality is expressed in terms of traits defined in the signature
crate.
License
All crates licensed under either of
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.