Introduce concept of scalable endpoints

There are several changes in this pull set, but the most important is the concept of a 'scalable endpoint'.  This is an endpoint that can support multiple transmit and receive contexts.  This is useful for multi-threaded applications and allows access to independent HW resources without thread synchronization.  Conceptually, this is similar to the networking concepts of RSS/TSS -- receive/transmit side scaling.