Separating the alternative interfaces from the plain Queue implementors.
Some renaming and cleanup towards less boilerplate.
Not sure about using AbstractQueue as parent.