use the run-parallel module to correctly queue all async stuff

- uses run-parallel to run async operations as batches, gets rid of the need for the `counter` and `done` variables
- puts all functions inside module.exports so that every instance of the module will get it's own copy of `issueData` (without this if you require('offline-issues') twice and run it twice the second one would overwrite the first ones data