massive refactoring of CType

now a two-level structure. CType is the wrapper which takes
care of object and storage modifiers, whereas AType is
the old CType without CObj and represents the basic types
test helper infrastructure
Merge branch 'integervulnerabilities' into feature_volatile
simplify and unify test scaffolding
Merge branch 'integervulnerabilities' into feature_volatile
fix pointer vs array problem introduced in prior extension
missing hashcode function lead to spurious errors
Merge branch 'master' into feature_volatile
detecting volatile assignments (CERT EXP32-C)
detecting const assignments (CERT EXP40-C/05-C)
changed CFunction(...:AType) back to CFunction(...:CType)

this way function parameters and return types have const/volatile modifiers that can be analyzed
completed EXP05-C checking of const in parameters
fix type serialization bug
change CType equality

now requires full equality, because previously
Conditional[CType].simplify would merge things
that were not supposed to be merged
fix type comparison in linker checks
based on STR04-C: issue warnings when assigning incorrectly between char types

could be extended to issue warnings between all integer coercions
Merge branch 'integervulnerabilities'

Conflicts:
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CBuiltIn.scala
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CDeclTyping.scala
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CExprTyping.scala
	CTypeChecker/src/test/scala/de/fosd/typechef/typesystem/DeclTypingTest.scala
Merge branch 'integervulnerabilities'

Conflicts:
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CBuiltIn.scala
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CDeclTyping.scala
	CTypeChecker/src/main/scala/de/fosd/typechef/typesystem/CExprTyping.scala
	CTypeChecker/src/test/scala/de/fosd/typechef/typesystem/DeclTypingTest.scala