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.
I guess that depends on how much you want to increase complexity to facilitate extensibility. Are there hybrid options?

And a note on the strings, those aren't purely implementation details, those are also part of the command-based API.