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.
Merge pull request #52 from prism/event-interfaces

Extracting base event "types" into interfaces
Add JSR 305 for @nullable support
Initial commit of Vector{3/2}{i/f/d} interfaces

Based on flow-math stuff
Document the Vector classes
Merge branch 'math'