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.
It depends really. It's not dynamic, the only changes occurring here would be based on Minecraft code changes, and most likely extensions, no removals. I vote for enum with a String value matching Minecraft's.