Remove setArgument(), arity() from Predicate

These methods aren't actually necessary, but bloat the class
definitions coming out of the converted Prolog-to-Java process.
Remove them altogether and handle initialization of a Predicate by
passing the arguments through the constructor using reflection.

Labels within a predicate are now generated from the Operation
base class, allowing the singletons to avoid having the tiny
unused continuation pointer within them. This makes most of the
label instances have no instance members, which prevents them from
carrying any state and needing to worry about global data.

Singletons are now marked final, ensuring they cannot be changed
to another value. This permits the JIT to perform better inlines.
110 files changed