Añadidos hashCode() y equals() a todas las entidades

Se ha establecido en la clase abstracta Article que todas las entidades hijas
deban implementar hashCode() y equals() para evitar problemas futuros. A su
vez, se ha eliminado el constructor @VisibleForTesting, prefiriendo la
existencia de un unico constructor visible (si no se necesitan todos los
atributos, se pasan parametros "por defecto" y se evita la necesidad de un
constructor necesario solo para pruebas).

Se han añadido los tests necesarios para verificar la correcta lógica del
hashCode e equals en todas las entidades, haciendo uso de la libreria
EqualsVerifier (añadida al pom.xml en scope de test) y que los constructores de
las distintas entidades validan que no se utilicen parametros nulos para la
asignacion de los atributos con "nullable = false".

Como ultimo se han corregido ciertos problemas de indentación en el código
(mezcla de tabuladores y espacios), que en Eclipse no se distinguen pero en el
visor de código de GitHub sí.