Add Voxel class

Got to merge that math branch…
Extracting base event "types" into interfaces

`BlockEvent` interface may be combined with any other event interface
rather than limiting child classes to being of one type.

Modifying state events to match the new structure.