Issue #990 First run of a PolymorphicSchema API.

So I wrote something up for polymorphic schemas. Need to get the tests run on travis (can't run make locally on Windows), but the tests that I edited are all passing.

Here's how it works so far - would be great to hear what you'd need to get this into core.

    var PolymorphicSchema = mongoose.PolymorphicSchema,
        SchemaDeterminant = PolymorphicSchema.SchemaDeterminant;

    var VehicleSchema = new PolymorphicSchema({
        _type : SchemaDeterminant, // flags this property as being an enum of concrete model names.
        make: String,
        model : String,
        year : String
    });
    var BikeSchema = new Schema({
        _type : { type:String, default: 'Bike' },
        handlebars : ObjectId
    });
    var CarSchema = new Schema({
        _type : { type:String, default: 'Car' },
        trunkCapacity : Number
    });
    VehicleSchema.sub('Bike', BikeSchema);
    VehicleSchema.sub('Car', CarSchema);

    var Vehicle = mongoose.model('Vehicle', VehicleSchema);
    var Bike = mongoose.model('Bike', BikeSchema);
    var Car = mongoose.model('Car', CarSchema);

    Bike.create({  }, function(err, res) {
        Car.create({ }, function(err, res) {
            Vehicle.find({}, function(err, res) {
                assert.ok(res[0] instanceof Bike);
                assert.ok(res[1] instanceof Car);
            });
        });
    });

Things it still needs:
1. Probably should auto-add a .default() to the sub schemas for setting the SchemaDeterminant property correctly.
2. Should the properties on VehicleSchema (e.g., make, model, year) be auto-added to the sub-schemas?
3. Should this be folded back into Schema? So if a Schema includes a SchemaDeterminant property, it can have .sub()s, without needing the PolymorphicSchema constructor at all.

Things that are a bit sketch:
1. Calling .sub() takes in a modelName, but it's a method on a Schema. Is that kosher? I originally auto-generated a model name like 'Vehicle_Bike', but that meant `!(Vehicle.find(bike) instanceof mongoose.model('Bike', BikeSchema)` - you had to magically know to use the model name 'Vehicle_Bike'  rather the more obvious 'Bike' to get access to the preexisting model class.
2. Even then, the order of .model() calls is significant. If you call `mongoose.model('Bike', BikeSchema)` before `mongoose.model('Vehicle', VehicleSchema)`, then you just created a different model with a different collection.

Any improvement ideas? Have any good ways to address any of these points?