apply setters on objects of an array

added test for apply setter on each object of array
check for available setters
Update utils.js

Updated to include pluralization of wife, knife, and life
Allow to define a type for schema validators
Added test for "Allow to define a type for schema validators"
Fixed test for "Allow to define a type for schema validators"
Fix Bug: enum validator will fail validation except the first one value
Update enum validator test for SchemaTypes validate method

Update test for commit #7f1f609
fix model.discriminator.querying tests dependencies and use async in dev dependencies to be more readable. #1820
fix hydrates correct models when finding with discriminators and fields selection set. #1820
fix discriminator model only finds documents of its type when fields selection set. #1820
test findOne discriminator model only finds a document of its type when fields selection set. #1820
make find and findOne discriminator fix identical. #1820
Merge branch '1798' into 3.8.x
Merge branch 'master' of git://github.com/heroicyang/mongoose into 1778

Conflicts:
	lib/schema/string.js
Merge branch '1778-again'
Merge branch 'master' of git://github.com/yl2chen/mongoose into 1721
use mpromise 0.5.0
release 3.8.2
now working on 3.8.3-pre