initial implementation of task scheduler
updated TQL tests
scheduler updates

* renamed Coroutine to Task, Task to Worker.
* added Task.whenStateChanges() method.
* added Worker.whenDone() method.
* updated Worker iteration to handle generators and deferreds properly.
* added unit tests.
fixed task resume from deferred
ported event writer to task interface
load Scheduler as a Utility in server

* added zope.component as a runtime dependency
make store writing async, using tasks
remove old getRegistry references
made Scheduler a twisted Service
create Task for use by store output plugin
remove ISchema.hasField() interface method
make searching async, using Tasks
preserve stack traces when Worker throws an exception
get schema from writer/searcher
added DB flags parsing for segment methods

* wrapped DB methods in ALLOW_THREADS block to release the GIL
execute store writer methods in a threadpool
write event to index using multiple transactions
update ISearcher providers
release the GIL during DB cursor operations
release the GIL during Index DB operations

* added **flags argument to most Index methods
* renamed add_field to set_field.  Add semantics can be enabled by
  passing NOOVERWRITE=True
* renamed add_segment to set_segment.  Add semantics can be enabled
  by passing NOOVERWRITE=True