simplify EventRouter and remove geval dependency

this reduces the index.html by about 4k.  it could probably be reduced even
further by removing redundancy between geval/event and observ