Openbazaar python launcher

new pull request after 1st round of reviews.
Thanks @Renelvon this has the merged changes from your repo.

(@Renelvon I kept that REVERT commit you put there as I'm not sure I understood what was right or wrong about it, I figured it'd be easier to fix here now)
I couldn't read the link you put @hoffmabc , maybe I'd understand why you're not sure the mutex would do the job.
If you have an alternate link, or if you could paste the context of signals.txt somewhere maybe I'll understand what you mean by the flag.

I was thinking the flag you'd like to use would be something like

```
   if not self.shutting_down_already:
      self.shutting_down_already = True
      do the shutting down
```

the mutex would exclude the second call from happening as the last one is still finishing, but when the last one finishes it does `sys.exit`, so not sure why you wouldn't think it doesn't resolve it.

```
    def shutdown(self, x=None, y=None):
      	self.shutdown_mutex.acquire()
        print "MarketApplication.shutdown!"
        locallogger = logging.getLogger(
            '[%s] %s' % (self.market.market_id, 'root')
        )
        locallogger.info("Received TERMINATE, exiting...")

        # application.get_transport().broadcast_goodbye()                                                                                                   
        self.cleanup_upnp_port_mapping()
        tornado.ioloop.IOLoop.instance().stop()

        self.transport.shutdown()
      	self.shutdown_mutex.release()
        os._exit(0)
```