Remove wildcard listeners

When removing wildcard listeners the method `searchListenerTree` returns an array of all possible listeners matching the wildcard expansion on which then loops to find the correct listener.

However if one of these elements is an array of handlers without the one we're trying to remove, the method returns, thus leaving the listener attached.

The use case is
````js
emitter.on("foo.bar.baz", goodCallback);
emitter.on("foo.bar.baz", goodCallback);

emitter.on("foo.*.*", badCallback);
emitter.off("foo.*.*", badCallback);

emitter.emit("foo.bar.baz");
// bad callback is called
````

In the pull request I've done some changes to
* Fix `npm test` on windows and node 0.8
* Remove some JsHint errors
* Fix the issue above :smile: 

If you don't like the others you can simply pick the last commit