Cleans up train latching/unlatching

Cleans up train latching and unlatching. The proc responsible for latching trains only latches a train onto the end of another one - this simplifies the logic a bit. Also gives the player more detailed feedback when a train cannot be latched or unlatched, and adds a verb for turning off train engines.
I just want to say that, in my opinion, relying on completion flags like this tends to result in code that's hard to read and therefore more likely to break. I think it's probably better to check the state of the object, if you have to, or better yet, move related processing into the proc that's responsible for it instead of it being split in two places like this.