Move liquid: Handling liquids more effectively (WIP)

This implements a new method in game.cpp. The handle_liquid method is a bool, which means it forces to you handle all the liquid from a container until it's gone. That means, for example, when siphoning water from a vehicle, you *must* siphon it all, so if you run out of containers, you have to pour all the excess on the ground, or get stuck in a loop. No more! move_liquid is an int. That means you can input how much water is in the tank, pour some into a container, and put the rest back into the tank. Of course, I haven't implemented that yet.

Goals:
1) Change handle_liquid so that it only works when you have an unlimited water source, and make it so it doesn't force you to pour water on the ground. Also, clean up code, remove redundancies. Lots of work.
2) Fix siphoning and other methods using handle_liquid that would work better with move_liquid.
3) Clean up code to make it easy to read and efficient.

Help and commentary would be appreciated.