Improve client buy forward


Requested on the forum.

Originally ```CS_OnBuy``` was called somehow in the middle, after commands/menus issued by the player, and before any actual game checks (basically if an user can have this item).

The patch offers 2 main changes:
* ```CS_OnBuy``` is now reliable and called only when a player is going to get a weapon.
* Intrioduce a new ```CS_OnBuyAttempt``` forward to match any buy attempt, which is basically called right away when any buy commands are issued by the player...

Both forwards can be blocked.