Fix bug in batch fetching & clean up the method a little

- Don't call success callback if any request failed
- Don't call error callback more than once if multipe requests fail
- Avoid potentially creating more batches than needed which could happen if enough duplicate
    request URLs were thrown out (use count of uniqueRequests instead of identifiers when calculating batchCount)
- Avoid creating a new array from the requests set on each batch
- Introduced a constant for batch size