Better AMD compatibility

Doing things this way will not break how overlord has worked before, but will add support for loading Overlord the regular way, aka: 
`define(['overlord'], function (Overlord) { yadda yadda yadda.. `

I also found that you cannot pass objects as data when calling publish(). This second commit will automatically wrap anything other than an array in an array.

See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
`Note: Most browsers, including Chrome 14 and Internet Explorer 9, still do not accept array-like objects and will throw an exception.`

Just thought I'd share these modifications :)

Also, apologies for the removal of spaces on otherwise empty lines, I can't find the setting in my IDE that leaves them alone.