'Start a Tribler session by initializing the LaunchManyCore class, opening the database and running the upgrader.
Returns a deferred that fires when the Tribler session is ready for use.'

@blocking_call_on_reactor_thread
def start(self):

    if self.config.get_http_api_enabled():
        self.lm.api_manager = RESTManager(self)
        self.lm.api_manager.start()
    self.start_database()
    if self.config.get_upgrader_enabled():
        self.upgrader = TriblerUpgrader(self, self.sqlite_db)
        self.upgrader.run()
    startup_deferred = self.lm.register(self, self.session_lock)
    def load_checkpoint(_):
        if self.config.get_libtorrent_enabled():
            self.load_checkpoint()
    return startup_deferred.addCallback(load_checkpoint)
