Subclass Assumptions Predicate from FOL

- [ ] Subclass assumptions.Predicate from FOL.Callable and rename it to AssumptionsPredicate.
- [ ] Subclass assumptions.AppliedPredicate from FOL.Applied and rename it to AppliedAssumptionsPredicate.
- [ ] Rename Function and AppliedFunction in FOL.
It _is_ called ```Predicate```. But the logic behind ```Predicate``` is in ```Callable``` and similarly logic behind ```AppliedPredicate``` is in ```Applied```. FOL ```Predicate``` subclasses ```Callable`` and overrides the ```apply()``` method. Subclassing Predicate will produce the exact same result. So it is simply a question of preference.