skip initial hidden tokens when assigning a position

this is slower but more accurate.

before, the position may point to a too broad text fragment
although part of the text fragment is not included in the
corresponding condition of the result. this is a minor issue
and may not be worth the performance overhead of making this
more accurate.
normalize CFunction creation

when a CFunction is created with a single CVoid() parameter
that parameter is removed. Arrays and Function parameters
are automatically converted into pointers
support different strictness levels in linking

the previous comparison was too strict. now it compares
normalized signatures.

normalization can be done at different strictness levels.
at the strictest level signatures are compared and must
be identical except for simple equivalence rules like
CPointer(x) == CArray(x)

at the most relaxed level only names are compared without
types

at the medium level various normalizations are performed
treating all integers and all pointers as equals

fixes bug #18
rename refactoring for readability
add missing test file for prior commit (linker normalization)
Merge branch 'NormalizeLinker'
javabdd dependency as managed maven dependency

repackaged Javabdd library as maven package which
is now automatically imported from maven

this avoids having to copy the jar file around in
every project
bump up version number
fix import of CIgnore from xml
update version numbers of scala and dependencies
add inactive test for future checking
fixed regression

due to library upgrade test needed to implement additional interface
bump sbt version to 0.13.1
replace deprecated method call from updated testing library

replace expect() with expectResult()
refactor for nicer getVersion abstraction
removing old main methods

it's not a good idea to run subsystems independent
of the main Frontend class, since options are not
parsed and preserved. Instead we would use plenty
of boilerplate code for default options or debugging
code
redesign of the lexer interface

The lexer no longer returns a list of tokens but a conditional
lexing result (part of which can be conditional errors and success
 consisting of a tokenlist)

At the same time, main classes have been renamed and merged
to avoid multiple frontend classes with different behavior.
Now tests and real executions go through the same look requesting
and processing tokens, but tests use empty option objects.

For that purpose LexerOptions was generalized to allow lexing
from arbitrary sources, not just files.

The signature changes have rippling effects throughout many tests
and Frontend classes
fixing intellij warnings; code layout
remove obsolete code
renaming refactoring