Adds a function which returns interpretations of a valid model
Some new test for findModel function

findModel, returns all valid interpretations of a model
More tests and polishing
Improves hasModel function

Now, `hasModel` does not use the length of the output list to find out if there is a valid model. It's just checks if the lsit is empty or not, in order to take advantage of the haskell laziness.