Add bulk block events and change event class inheritance.

* Adds BulkBlockEvent to handle bulk block events.
* Makes some proposed events extend BulkBlockEvent.
* Makes place/break events player-specific and makes them extend BlockChangeEvent.
* Adds BlockInteractEvent for when a block is interacted with.
* Changes PlayerChangeSignEvent to extend BlockInteractEvent.
Add a few more block events.
Merge branch 'blockevents', remote-tracking branch 'upstream/feature/block-events' into blockevents
Some small fixes
* Generalize EntityInteractionType to InteractionType
* Add CommandReason, which can provide the command
* Edit javadoc to be more clear in some cases
* Add interaction type getter to BlockInteractEvent