Make HLint happier
Less system-specific coercion
Uses more reasonable names

* the new transaction_id will be phased out, and I'd rather have nice names
* on the more permanent ones.
Adds transaction ID wrapper
Rough pass at sending/receiving announce actions

* A lot of this is flat-out terrible :bomb:. To be refactored later.
* I do like the `ensure` function (although it's probably a sign I need
  to model my types better).