Add Enum<T> and switch EventBus to more formalized event types

Also reuse Enum<T> for workspace.EventType. This is in preparation for moving FilesController over from home-grown StreamController to EventBus, which in turn is in preparation for listening to EventBus in SparkPolymerUI for controlling the UI.

@devoncarew