Remove redundant code from BookmarkObserver.onItemChanged()

Livemark titles are immutable now.
Status in Places should take precedence in Query.verifyBookmarksAndTags()
Convert a few remaining async callbacks into coroutines.

Plus some other minor touch-ups.
Use ECMAScript 6 built-in for...of instead of custom iterator
Make prototype functions imported from common.jsm non-enumerable.

Array.prototype.intersect() used to be effectively non-enumerable because
of the custom iterator. After its removal, the presence of the function
screwed up Service.js because the component manager apparently treated
it as another component constructor. Why would the component manager
enumerate the Array global object, I have no idea.

Making new prototype properties non-enumerable would be the right thing
to do anyway.
Yield without a value is deprecated.

And make the surrounding code a little nicer too.
Add Denis Lisov as a contributor.
Remove old pre-Firefox 4 stuff.
Revert commit d5892927ca.