ScriptCompression::Unser ignores the DecompressScript return value and
leaves the script empty on failure, without notifying upper layers about the error.
In the worst-case scenario, which is currently only reachable through corruption,
an unspendable off-curve P2PK turns into an anyone-can-spend empty script.
Given that, properly throwing the error to prevent any future mistakes from
happening seems the sanest path to follow.
Aside from that, added coverage for a P2PK script with an uncompressed pubkey that has a valid X but a wrong Y, which makes it unspendable. Checking we store such scripts raw and never encode them as 0x04/0x05, as those encodings serialize X with only Y's parity (not the full Y), which would make decompression recompute Y from X and turn the unspendable script into a spendable one, which would not be good.