Adjustment for scoping

The code was wrapped in two anonymous functions, which could cause `this` to be undefined depending on how the loglevel code was included in a project. 

Only using one anonymous function and having this be at the "top-level" allows the code to be wrapped and invoked with apply like so:

```javascript
var myScope = {}:
(function(){
 // loglevel.js source
 // "this" will equal myScope, since the "this" in loglevel.js is in this scope.
}).apply(myScope);
myScope.log.debug("log was defined on myScope");
```

The code change follows the same pattern as this:
https://github.com/marionettejs/backbone.marionette/blob/master/src/build/marionette.core.js

I'd love to write a unit test but I'd have to adjust the `Gruntfile.js` and include grunt-preprocess or grunt-rigger, which are code injection/include tools, to generate a test that includes the `loglevel.js` wrapped in a function invoked with apply. If you want me to do this I will. 

I also hope that my change doesn't affect anything that the `undefined` argument was doing.
https://github.com/pimterry/loglevel/blob/master/lib/loglevel.js#L8

Thanks,
Gianni
I was about to revert the QUnit change, but was thinking that the purpose of this unit test is for testing that an existing global log function is restored to its original value, and not testing the functionality of QUnit. This is especially true since the functionality of QUnit can change independently causing us problems with our tests. Having tests fail for QUnit 1.15.0 and work for 1.14.0 doesn't sound like a good idea long term.