Improve consistency of InvalidOperationException messages

Currently, the wording, length and punctuation on InvalidOperationExceptions (which are shown to the user when something fails in a command) are inconsistent.

This change changes the messages to, where appropriate, use phrasing like:

"Who do you want to (perform action phrase here)?"
"Which room do you want to (perform action phrase here)?"

and ensures punctuation at the end of each message.  I've also extended the tests to verify the messages that are returned so that we're more aware if regressions occur.