Core - Updated Events

@bmorwood 

all existing events are now updated to use the new pattern

I've also implemented a check on dispatch() that will automatically set the type if only a single event type has been registered to the event. Otherwise, if no event types or multiple event types are registered, it will throw a helpful error. 

In the case of none, it states that. In the case of multiple, it will list out the available event types associated to the event.

In the case of a single event.. and you don't specify, it defaults and continues on. If you want we can make this explicit so they MUST always set a type instead of defaulting for them. I'm not sure which side of the fence I sit on that one.. One way promotes better code for new people taking over.. not understanding that the system affords them that flexibility.. the other rewards people that knows the system and allows for quicker development. So long as they follow the guidelines.

`Event.dispatch` has it all. 

Some examples:

If you had an event with just 1 event type. You could say:

```js
new chaos.MyEvent().dispatch();
```
It will automatically find that single event type and use it.

If you had 2 event types, you could say:

```js
new chaos.MyEvent().dispatch();
```

and it will kick an error out into the console stating that you need to pick an event type and then lists the available types out for you.

The correct way for a multiple event type event registry would be

```js
new chaos.MyEvent({ type: chaos.MyEvent.OPEN }).dispatch();
```