Rewrite launcher in Python

See commit message for details. I'm putting this up now for review, but it still needs the packaging changes to create launcher.properties.