Improve recycler interaction by cancelling properly.

Addresses issue 1 of #1902:

* Cancelling and invalid input are handled properly now, instead of assuming the current selection (or devouring metal and giving you nothing in return).
* The "the recycler is empty" message is shown when examining an empty recycler, instead of waiting for you to make a (pointless) selection.