WIP: Defines a new Tableaux State record

All functions now use the new record TableauxState
We may update them even more to (almost) all take as an input a TableauxState
Most functions now use TableauxState data record
Code formatting (hlint, stylish-haskell)
Adds an 'index' field to ModelState

Index field is holds a number that is being increments each time a new individual is created.
TableauxState now stores all visited rules

When we meet an AtMost/AtLeast/Exist/ForAll concept, we store it
at the rules filed of TableauxState record, for future use

* TODO: We need to take care of the CGI rules too
ForAll seems to work in every place of the model

TableauxState hold all ForAll occurances and re-apply them
whenever a role assertion is encountered
AtMost seems to work in every place of the model

TableauxState holds all AtMost occurances and re-inject them to
the model in order to re-check for any possible rule violation
AtLeast seems to work in every place of the model

Each time an individual substitutions is happening, not only model
is re-checked, but the visited rules too.
A new function was created for this reason: 'isConsistentWithRules'