qunit.completenessTest: Unbreak regular functions with static methods

While it already skipped constructor functions during the injection
phase (and thus didn't affect their properties), regular functions
can have properties, too.

Due to the QUnit CompletenessTest injecting a spy in mw.log,
things like mw.log.warn became undefined and causing exceptions
to be thrown sometimes.

Fix breaking of mw.log methods (and potentially other things) by
giving letting the spy function object inherit from the original
function object.

Also reduced and simplified logic further to accomodate this new
approach.

* Give injectCheck obj/key instead of masterValue/currPath.
* Pass around obj/key instead of value/key.
* Remove 'action' parameter, only ACTION_INJECT was ever used.
* Remove logic for 'prototype', this is now included in the type function/object case.
* Remove logic for 'prototype.constructor', this exclusion works naturally
  due to constructor functions being filtered out.

Change-Id: If16db9337a99865ada0fe1c482dd62a572239030
Merge "qunit.completenessTest: Unbreak regular functions with static methods"