Refactoring no sistema de regras para deixar o sistema mais genérico.

As regras, cujos métodos aplicavel() e aplica() já recebiam como
parâmetro uma Locacao, foram modificados para permitir agora a
passagem de qualquer objeto. O retorno do método aplica() também
foi modificado para suportar qualquer objeto. Assim, ganhamos em
flexibilidade do código, uma vez não deixamos mais o sistema de
regras fortemente acoplado a uma Locacao (parâmetro) e a um
double (retorno).