changes Subscribe to MultiSub, and then adds SingleSub on top of it, I decided it was too tricksy to have the getEventName() return either a string or an array, and so separating those out makes it more explicit what you want to do, and makes the code easier to read
refactors a bit of assets to make it easier to extend, I was going to add a CssAssets and a JsAssets sub class, but decided not to since then why wouldn't I add an ImageAssets sub class, etc.
fixes some problems with path handling that I broke last week when I refactored the path finding to be recursive. Gets rid of the exception controller and moves the methods that were in that controller into an event sub object that does the same thing.