Feature list preloader support multiple target sizes

To provide different target sizes in the `ListPreloader`, i had to
 1. change the signature of the `PreloadSizeProvider<T>` to `getPreloadSize(T item, int adapterPostion, int itemPosition)`
 2. change the `PreloadModelProvide` to request the preload items one by one. This is needed to provide the `itemPosition` to `PreloadSizeProvider.getPreloadSize()` method.

In addition i added some test cases for the new functionality and adapt the old tests to the one by one approach. 

I also change the deprecated `ListPreloader(int maxPreload)` constructor, to remove some null checks and make it easier to later remove the deprecated constructor and the methods. 

regard,
David
Good call, this is definitely cleaner, thanks!