Added Difficulty and completed objectives

completedObjecives is a way to track all the objectives while still
removing them from the main list when completed
Added Rewards

RewardType.CUSTOM doesnt have a handler
Added getObjectives(ObjectiveType)

When removing Objectives, and you dont have the specific objective, you
should use getObjectives(ObjectiveType) to prevent
ConcurrentModificationException