Ready to review.

I've tried to explain most of the code in the code.

I think that it covers more or less all requirements, But due to the lack of time, may be I've taken some "licenses".

TODO list:
- Better error handling
- Use pagination from the API to load more pictures.

Thanks for your time.

No esta mal la idea de tener esta super clase para poder tener fuera del VC el data source de la tabla/coleccion.
Pero yo lo hago de otra forma porque estas forzando a que esta clase sea un VC. Yo lo que hago es tener una clase aparte del tipo NSObject que es el data source de la tabla o coleccion view. De esta forma, puede inyectarle esta clase data source y asi no obligo a que esta sea del tipo VC y tampoco obligo a que la clase que quiera incluir esta logica deba ser subclase de este VC. ¿Que opinas?