Learning, public unit::throw(), reorg unit.cpp.

You can learn how to throw by throwing or watching someone else.
Currently there is no public function for learning by watching. What
happens when a creature is hit is implemented, though somewhat
incompletely, in hitWithFlyingObject().
unit.cpp was reorganized to have private functions on top, public ones
on the bottom.
Also, added booleans to ensure that you cannot do multiple actions
simultaneously, except when it makes sense. Also, you cannot do the same
action twice in one turn. But you can for instance, move while throwing,
though it has an accuracy cost.