USSD facade and Linux implementation

@trivedigaurav Here you go. I tested it with my dad's phone and it seems working. The only bug I found is that after initiating a request that doesn't require a response from the client, it still waits for a response. I think however that it's a bug in the phone, because it shows the "Reply" button on the screen too.
A workaround is to send an empty response before initiating the new session; it will raise an exception that can be captured, but it will close the open session. However I preferred not to implement it.

I will test it with some more phones; I have a Nokia phone which acts as a USB modem but it's not turning on. I can find a bunch of Samsung phones with the stock ROM.

The facade's API is identical to the ModemManager USSD API, with pythonized names (e.g. method Initiate is initiate, property NetworkRequest is network_request). If you need API changes please contact me so I can patch the Linux implementation.