Lots of stuff

@eduojeda Un par de cambios:

* Reemplacé `Object.build` por `new`. No veo necesidad de usar una construcción custom, si en realidad está haciendo lo mismo que javascript ofrece a través de `new`. Además IMO la sintaxis de `new` es más clara.

* Extraje un nuevo mixin `Alive`. Este mixin se encarga de leer el input (por ahora solo el keyboard) y de actualizar el sprite. Esta es la última abstracción grande que nos quedaba por extraer de las las entities.

* Introduje el concepto de `inputSource`. Por ahora hay un solo tipo `inputSource.Keyboard` que usa player. Mi idea es que esta abstracción sea usada cuando implementemos entidades con IA. 

* Introduje la abstracción `Entity`. Abstraje todo el comportamiento común entre las entities en esta nueva entidad. Ahora Ball, Player y Dog son simplemente una serie de specs específicos de la clase. No sé si el mecanismo que decidí usar para abstraer Entity es el mejor, si se te ocurre alguna idea mejor será bienvenida.

* Agregué la clase Zombie. Por ahora es prácticamente igual a player. También implemente un imputSource llamado `Enemy` que es asignado a la instancia de Zombie que estoy creando. Enemy contiene la IA de un zombie, que consiste en ir a buscar el perro y luego huir de la pantalla. 
  Un punto importante a considerar es que los inputSources (IA) es que necesitan conocer el estado del mundo para poder tomar decisiones. El estado del mundo en nuestro caso consiste del tamaño del mapa y las entidades (por ahora al menos). Es por esto que en world cree un objeto llamado `globalStatus` que mantiene una referencia al estado del mundo, y luego es pasado a las distintas entities cuando se las instancia. Sé que no te copa el hecho de compartir  estado así, pero la naturaleza misma de los agentes de IA me llevó a hacerlo. 
 En cuanto a la complejidad de la IA, fue mucho más sencillo de lo que creí que iba a ser. Ahora veo mucho más factible la cosa. 

### Next steps

* Algo que habría que pensar como hacer es el tema de las interacciones entre entidades. Zombie agarra a perro, player le "pega" a zombie, etc. 


__random thought__
Estamos poniendo mucho esfuerzo en abstraer cosas en el nivel equivocado. La abstracción más importante, la de "Entity", todavía no la habíamos hecho. Una vez hecha esta abstracción, se hace más claro que nos enroscamos de más en limpiar lo que antes era el constructor de Dog y Player, ya que ahora esa lógica está en un solo lugar, en Entity, y por lo tanto no se hace tan necesario refactorear o extraer abstracciones de ahí.

Fijate si al menos podés pegarle una mirada antes de la semana que viene así podemos avanzar. Salute!