ensure readOnly is always a boolean
[Performance] 2-5x increase throughput for cached CP sets

1. don't attempt to get meta.watching until absolutely needed, a miss here is very costly
nearly 30% of the savings
2. don't use hasOwnProperty if not actually needed
3. function.length is costly, cache it on the function
4. attempt a descriptor lookup to potentially mitigate the indexOf
5. for CP's that are not setters, and their value is already known, short circuit (this might be wrong, but no tests fail, we should add tests if this is wrong)