Add a Doubling trait that extends IntQueue.

The Doubling trait has two funny things going on. The first
is that it declares a superclass, IntQueue. This declaration
means that the trait can only be mixed into a class that also
extends IntQueue. Thus, you can mix Doubling into BasicIntQueue,
but not into Rational.

The second funny thing is that the trait has a super call on
a method declared abstract. Such calls are illegal for normal
classes, because they will certainly fail at run time.
For a trait, however, such a call can actually succeed. Since
super calls in a trait are dynamically bound, the super call
in trait Doubling will work so long as the trait is mixed in
after another trait or class that gives a concrete definition
to the method.

This arrangement is frequently needed with traits that implement
stackable modifications. To tell the compiler you are doing this
on purpose, you must mark such methods as abstract override.
This combination of mod- ifiers is only allowed for members of
traits, not classes, and it means that the trait must be mixed
into some class that has a concrete definition of the method
in question.