Refactor implementation of completeness metric

I have refactored the implementation of completeness metric to a more
functional style. Instead of incrementing an instance variable to track
the number of completed fields the value is returned by the methods.
This way it was easier for me to implement the averaging of the
completeness of item fields.

The schema is now only passed once to the constructor and it is not
required anymore when computing a score.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>
Add additional case for completeness metric

I had a typo in my unit test which was one reason for the failing unit
test. Another reason was that I did not differ between object, array and
other types before checking the completeness. If the data is an object
or array the counting has to be delegated once more. Otherwise the
completeness can be checked.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>