EDIT: PrologList refined.

Using the multimethods and some tricks, PrologList unification and restruction is now a bit simpler.