This patch removes the need of static global variables and introduces a new, caller-allocated 'struct ussd_request' that needs to be passed to the various functions.
This is the initial checkin of the USSD code from Mike Haben. I didn't put it in the main branch as I think it still needs some cleanup.