Basic Support for Plugin Events

This allows for plugins to add additional code to the Application events, it's very basic and only allows one injection point (just before the developer's events are included) but solves an issue I was having while developing an plugin.

## Plugin Event Process
1. Events are registered with Wheels through the plugin's init function by defining the events to be included in a events variable. For each event in this list, Wheels will include a file with the same name inside an events folder in the plugin's folder.
2. These events are processed inside the $pluginsProcess function, which works by adding them to a struct of arrays where each event is a struct key containing an array of paths to the specific event in the plugin's event folder.
3. Finally each event in the wheels/events directory calls a $loadPluginEvents method with the event name which loops through the array inside the event struct and includes the event code from the plugin. This happens just before the developer's events in most cases, onError and onMissingTemplate occur at slightly different points.


## Example
```<cfset this.events = "onapplicationstart,onrequeststart,onsessionstart">```
Will include the following files
* /plugins/SamplePlugin/events/onapplicationstart.cfm
* /plugins/SamplePlugin/events/onrequeststart.cfm
* /plugins/SamplePlugin/events/onsessionstart.cfm

This probably isn't the most robust or feature rich way of accomplishing the task, but it does provide a crude method for plugin developers to include custom code without forcing the developer to add the code to their event files. Also since it's included before the plugin developer's code, they can still override plugin settings in their own event.