0.5.1

Patch release for the FlashStep HTTP wire correction.

Chain confirmed in flashstep-wire-shape-and-phase-3-6-goldens.md
that POST /flash-swap takes FlashStepRequest as an externally-tagged
enum with flat token field pairs, not the internally-tagged
{kind: swap, ...} shape with nested TokenId I shipped in 0.5.0.

Fixed:
- FlashStep abstract drops the Kind discriminator property.
- All four variants use flat token_*_namespace / token_*_name
  fields with snake_case [JsonProperty] mappings.
- FlashStepConverter (registered on VelocityJson.Settings) handles
  the {VariantName: {...}} external wrapper for both write and
  read.

Borsh form (nested TokenId, used inside Action::FlashSwap.steps for
signed-envelope flows) unchanged — will pair with SignedFlashSwapAsync
when that wrapper lands.