Add predicate Known. Allow predicates with arbitrary arguments.

Known(%a,cexpr) asserts that variable %a is equal to some constant expression.
It cannot be translated to LLVM, but may be used by Souper.
Start adding codegen
reject transformations where newly created temps are unused
This helps preventing mistakes in specs, and disallows the introduction of dead expressions (not interesting).
add abs() constant function
Allow true, false, undef, null in function and predicate args.

Move recognition of true|false|undef|null from operand to cnst_expr_atoms.
Merge branch 'lits' into upstream
perhaps a slightly more interesting undef test...
add support for unsigned operators: u< / u>= / ...
fix confusion in the parser between predicates and functions
switch solver used for type checking
Yields a speedup > 10% for tests with many type instantiations
disallow unused operations in source template as well (unused in target were already forbidden)
fix test
add a "skip" test directory that is skipped by lit

populate it with a file containing a couple of optimizations that
blow up on the width() issue
fix printing of bool predicates
added bugs found in LLVM instcombine
added test case to demonstrate the slight differences with the usage of predicates and functions
Merge branch 'master' of https://github.com/santoshn/alive