Changes return value of id to instancetype

Uses the `instancetype` instead of vague `id`so that the Swift compiler can use these methods without ugly downcasting.
You're right. If there should be any explicit return type, it should be POPAnimation.