If balance is going in negative (below zero value) then takeAmount()
should not change the current available balance value. Before these
code changes takeAmount() sets the current available balance to zero if
the balance goes negative.

Added a new event "EVENT_INSUFFICIENT_VIRTUAL_CURRENCY" in the event
handler.

The takeAmount() and giveAmount() methods now returns a BOOL  which
will give more control and confirmation to developer about the success
or failure of the transaction. And also no need to check repeated
getBalance() calls.