Update of providers' feature iterators

Currently providers do not support concurrent access of more iterators at once, so keep pointer to the currently active iterator and auto-close previous iterator when a new one is requested.
Auto-close iterators when all features have been set.
Auto-close iterators when the provider is deleted.