feat(service): use a simple map internally avoiding callbacks issues

This removes the internal usage of `map[function(){}]` which is not recommended. Map's keys could/should be stringified with `toString()` (so i.e. `[object object]` or `function(…){…}`).

Resolves #23
Merge remote-tracking branch 'upstream/canary' into canary

Conflicts:
	src/service.coffee