FAQs: More attention to permitted errors.

@tmhammer the reason I have made these changes is to allow us to be specific about which types of errors we can ignore during the import process.

Yesterday when debugging [#80901208](https://www.pivotaltracker.com/story/show/80901208) I found that every request to the source responded with a "503 Service Unavailable" error, and that no documents were imported. This is the kind of error that should halt the import process; if it were allowed to pass silently the import would leave the ES index empty.

Later, when we introduce [Sidekiq](http://sidekiq.org/) background processing of imports, if the importer raises an error Sidekiq will know that it failed and with run it again. So, we want to take care to only continue when we get an error that we expect, and allow the process to fail if we encounter an error that we don't expect.

I did a couple of things in this PR:

- I changed the while loop to a map over an array of IDs. This removes the need to explicitly increment id during each iteration of the loop. We also don't need to initialize `data` to an empty array and then push to it.

- I moved the "extract to hash" logic into its own method, keeping each method short and focussed.

I have assigned this PR to you for review/merge. Let me know if you have any questions.