Move world events to API, move some effects to API, make RandomEffect abstract, no implementations for it yet.

Signed-off-by: Nick Minkler <sleaker@gmail.com>