FCPInterface.handleGetIntroductionPuzzle(): Synchronize

This is a workaround for the following issue:
https://bugs.freenetproject.org/view.php?id=6247

Synchronize around usage of the IntroductionPuzzle object because it is
stored in the database and thus subject to 6247.
SubscriptionManager.subscribeTo*(): Return ID instead of Subscription

This is a workaround for the following issue:
https://bugs.freenetproject.org/view.php?id=6247

- We must not use database-stored objects outside of their
synchronization scope to ensure that they can be GCed before rollback().

The only caller of these functions do not need the full Subscription
object anyway, it only need the ID. This commit also adapts the caller
to the new return value.