Move SLILProgram out of the SLILStmt hierarchy

A program is not a statement, so we adapt our classes. However,
SLILProgram is now full of casts since statements and programs
need different kind of parameters.
SLILProgram now prints variable names correctly again
Fix comments and imports of the TagStmt class.
Removed unused classes
Remove the higher kinded type Annotation from Target
Create a new base class SLILTarget for all targets in SLIL

In this way, we may remove some ugly casts in SLILProgram.
Add a default implementation of getAnnotation in Target
Remove the annotations package

The annotations package contains a system for writing annotations into
a BlackBoard in a type safe manner. It is not used.
Make PPFactories depend on ProgramPoint instead of Target
Moved widening and narrowing factories in the ppfactories package.
Add comment to Annotation class
Remove type WideningPoint from Target.

Differentiating between widening points and program points at the
type level seems overkill.
Make CompoundStmt and WhileStmt the only stmts which annotate program points.
Add methods dimension/numvars to determine the number of used variables.
Make known and homcoeff fields instead of methods
Make the opposite method a lazy field instead of a method
Make direct analysis of statements work
Add some comment