I know transactions are not reversible, but a nice feature to have would be the ability to cancel transactions that have 0 confirmations after a certain period of time has elapsed.
The bitcoin nodes will soon drop those 0-confirmation transactions (after a day or a few days), and then you could create another transaction to double spend the original unconfirmed one.
I would not say that this is actually double-spending, spending the inputs that has never been spent before is not double-spending.
You are kind of right there.
In fact, I see people using the term "double spend" in two different ways, and to be honest I don't know which is the more accepted one.
1. There are two unconfirmed transactions spending the same inputs.
2. A transaction is confirmed in a block, the block is then orphaned, and another transaction spending the same inputs is included in a longer main chain.