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.

Genial tu argumentacion, es justo donde queria llegar con mi pregunta. Lo del category, repito, en mi opinion puede parecer que se desacopla, pero un category es una mera extension de una clase en la que llevas parte de la implementacion a otro "fichero", pero en el fondo es la misma clase. Solo que en tiempo de ejecucion le añade esa implementacion presente en el category. A mi me gusta mas usar un factory para estos casos como bien apuntas y mis celdas son simples vistas que no se les pasa dato alguno.