back to embedded hasEnumBug check for prototype keys assignment

 - Never access properties, unless there is no descriptor support.
 - This is due to the inability to use `forIn` for looping through properties that have getters.
   Simply accessing the value would trigger the getter and result in a nice error.
   This means the enumeration bug needs to be checked at the implement level.
 - Now filtering verbs at implement level as well.