[ripple/rippled] Allow ed25519 node and validator keys (#2647)

nbougalis requested changes on this pull request.

**VETO**: this is a huge **breaking** change.

There is a huge, incompatible change in the way proposals are signed, even if `secp256k1` keys are used.

Previously we signed the result of `RCLCxPeerPos` using `signDigest`. Now, we sign the result of `proposalSigningData`.

The problem is that the two hash entirely different data, which means that two servers, both of which are using `secp256k1` keys, one with the old code and one with the new code won’t be able to verify each other’s validations.

The problem is that `proposalsSigningData` serializes the data, differently than `sha512Half` does. Consider:

«`std::uint32_t u = 0x12345678;

// what the old code does:
auto const x = sha512Half(u);

// what the new code does:
Serializer s;
s.add32(u);
auto const y = sha512Half(s.getData());
«`