Type-safe extracting methods for IterableAssert and ObjectArrayAssert

# Description
The aim of the change is to provide more robust and type-safe `extracting` method in place of the old ones, utilizing reflection.

Example:
`assertThat(fellowshipOfTheRing).extracting(race()).contains(HOBBIT, ELF).doesNotContain(ORC)`

This is done by introducing `Extractor` interface with `extract` method, which encapsulates the extraction of the field. Then, the overloaded method `extract(Extractor)` is added to both `IterableAssert` and `ObjectArrayAssert` classes, so that both utilize the new interface.

Also, an implementation of `Extractor` is provided, that extracts `toString` value from all objects.

# To-dos
* `extracting` methods using reflections are redundant after introducing `Extractors`. They may be marked as deprecated and new `Extractor` could be introduced: `ByNameExtractor`.
* The assertj-examples will be filled once the assertions are accepted (not merged)