Add basic scoreboard interface.

This PR adds basic scoreboard support to the API.
The scoreboard api is able to handle nearly every scenario possible.

You can add one Objective to multiple VisibleObjectiveCollections, you can add those to multiple players, or even implement ScoreProvider or SettableScoreProvider and return the score of each entry dynamically.
@ryantheleach That's what I though about when I wrote my comment. If you are not 100% sure if it could be changed by a mod, do not use an enum. My general rule is: Do only use enums where you absolutely need them.