Don't enforce max_items_per_stream when it's not passed in
Log permission denied errors as such, instead of the full stack trace.

Include which item IDs caused 500s.
Add an item_lookup tool for showing what was extracted for a given item.
Work around persistent 500s when fetching item bodies.

Some item IDs (e.g. 0xa23eae3e1c9b626a and 0x27cb2e8581e4065d) cause persistent
500s when making the /stream/items/contents API call. Previously, this 500 would
cause the entire chunk of ~250 item IDs to be aborted. Switch instead to
(recursively) splitting up the chunk into two, and retrying each split chunk
until we find the specific items that cause the error. The rest of the item
bodies can therefor still be fetched.

Fixes #11
Also save user-info output.
Don't report explore items as missing.
Reduce memory consumption.

Biggest difference seems to be made by making ItemId not store both the decimal
and Atom forms (both as strings). Instead store only a numeric form (as a long),
and synthesize the other forms as needed.

Also moves more things into functions so that temporary data structures can be
GCed.

Brings RSIZE for my account from ~680M to ~391M (which seems to be holding
steady as items are fetched).

For #6
Force file names for stream IDs to be ASCII with no non-alphanumeric characters (and a few symbols).
Force file names for stream IDs to be ASCII with no non-alphanumeric characters (and a few symbols).
Pass user_id around.
Replace absolute path of python
Replace absolute path of python
Replace absolute path of python
Merge pull request #17 from lichenbo/master

Replace absolute path of python in windows batch wrapper
Convert list to set before calling difference()
Mention item_lookup in the README.
Merge pull request #18 from mtstickney/missing_set_conversion

Convert list to set before calling difference()
Modern exception catching syntax.
More progress reporting.
Simplify README now that reader_archive and feed_archive are no longer useful.