checkpoint: atcommit queue only, catalog controls all interaction with indexes
- Different atcommit action strategy: each index now has its own threadlocal
  queue.  This means that a) people can call a method of a single index and get
  deferred behavior if they want it and b) we don't have to keep around a queue
  that keys by both index name and docid.

- We now eagerly change catalog.objectids on every index/unindex.  "Eventually
  consistent?" ;-)

- Use class sentinels for modes so they can be compared using is after
  unpickling.

- Add ``index_content`` method to indexes, which accepts the mode and either
  defers or does the action immediately based on the mode and the index's
  settings.  We'll need to come up with a better name and give this name to the
  methods on the catalog too.

- "commit_mode" is now "action_mode".

- Indexes now have a propertysheet that allows for manual changing of the
  index's action mode.

- Setting the action queue to None no longer mutates the object it's attached
  to.

- Index queue now has a useful __repr__.

- Catalog subscribers are now more clever about reindexing during an object
  move.  They no longer always do an unindex then an index; instead, if
  possible, they generate a reindex.

- Folder "moving" argument to add/remove is now the object to-which/from-which
  the object is being added/removed instead of just True or false.  This is in
  support of the above feature.

- Folder "duplicating" argument to add is now the object being duplicated
  rather than True if a duplication is in process.

- Fix the scaffold to use 3 transaction attempts.
new moving subscriber regime
add a dumber-n-dirt action processor without any conflict resolution semantics or proper exception handling; require actions to carry around the indexing mode
Merge branch 'master' into feature.queuedcatalog
Merge branch 'master' into feature.queuedcatalog
add the changed flag for the dnd processor
turn actionqueue into a transaction manager, add an actionsqueue with conflict resolution, optimize during drain
allow action_mode to be passed to index factories; defer indexing for all indexes save allowed; move mode sentinels to interfaces
coverage for factories
- Add a dependency on zope.deprecation.

- Deprecate index_doc, reindex_doc, and unindex_doc methods of the catalog in
  favor of newer index_resource, reindex_resource, and unindex_resource
  methods.

- Rename per-index *index_content methods to *index_resource.

- Add a flush method to the catalog and to indexes which flushes any pending
  indexing actions.  Also add a flush method to IndexActionTM objects.

- Refactor index action processing to use global functions.

- Call flush before doing a whole-catalog reindex.

- Update interface docs.

- Add a substanced.catalog.util module.
immediate-to-all
comments
dont call flush while testing reindexing
coverage for subscribers
add tests for util and coverage for catalog module
coverage for indexes module, change action names
rename queue to deferred, log instead of print
actual conflict resolution
import from new location