use generator delegation

use your dreaded `yield* next` internally. since we assert that all middleware are generator functions, it shouldn't break anything. a lot of people care about performance, and this will raise your benchmark numbers significantly when you have a lot of middleware (though you should use drastically fewer middleware than connect/express)