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 disagree in multiple ways. I will present my case but of course you may style your code as you see fit:
* Sustaining a single flow of logic may require a lot of nested conditionals, which is unreadable, thus not maintainable. See [here].(https://github.com/OpenBazaar/OpenBazaar/blob/master/node/routingtable.py#L454).
* SESE doesn't make as much sense in a language with dynamic types, where a function may return multiple data types. A single `return` statement is confusing in such a case, as it may imply a single return type.
* Exceptions just tear Single Exit to pieces. Since our code is exception-heavy, no one should expect a Single Exit either. It is an error even to implicitly assume one.