Overhaul provider api again.

Provider api uses event emitters for convenience. Also uses provider.notation.
provider.grabAll().on("data",console.log).on("error",console.log);

provider.grabAll, grabSeriesDetails, grabChapterPages, extractImage all
now return event emitters "data" "done" "error",
also arrays of args can be passed to grabSeriesDetails, and
grabChapterPages. extactimage, the idx can be omitted to get all imgs in
chapter.
the data event for these array operations provide result of one operation
while the done event provides array of results.
if an error occurs during any of these events, it is not retried (this was
removed as it enforces a certain style of use on api user)