cache souper queries in a Redis DB
Add lit-based integration test infrastructure

Also add a few integration tests for the solver interface and the pass.
Merge pull request #28 from regehr/master

cache souper queries in a Redis DB
Remove a few unnecessary includes
Move InstMapping and PrintReplacement to Inst library
Add Parser library

This is for parsing instructions in souper inst format. The intention is
that the output of the souper command can be piped directly into this.
Add souperweb tool

This is a web based tool that can be used to harvest simplifications from
LLVM IR, or to check user-supplied simplifications in inst format.
Add .clang-format file
Add inst tutorial/reference manual
Add UntypedConst instruction kind

This will be used by the parser to implement type inference for
integer literals.
Many parser improvements

Specifically, type checking, type inference and support for alphanumeric
instruction names.
Add support for reading models
Many improvements to souperweb tool

Specifically:
 - Use GetSolverFromArgs instead of built-in solver.
 - Timeouts are enforced by souperweb instead of souperweb-backend.
 - Add a few examples.
 - Add some JavaScript to allow for navigating between solutions
   without reloads.
 - Add Redis-based cache (separate from souper's Redis cache) and
   permalinking.
Add Docker recipes for souperweb
Updated version of Jubi's patch.

The purpose of this patch is to support and test most or all undefined
behaviors for the supported subset of LLVM.

Relative to pull req #34, this one fixes up a few missing CamelCases
and also reduces the bitwidths used in several test cases.  The entire
"make check" now completes in about 2s on my machine, using a recent
STP. My judgement is that the bug-finding power of these test cases
is probably reduced very little or not at all by the reduced
bitwidths.
Add Jubi Taneja (individual CLA)
Merge pull request #36 from regehr/master

Updated version of Jubi's patch
Ignore VectorType GetElementPtrInst (issues #29, #33)
code that I've been using to narrow down a miscompilation, that I believe will
be useful in the future

it has three parts
- build compiler-rt so that we can use UBSan from our LLVM version
- detailed srcloc printing for replaced instructions
- two command line options supporting binary search for a bogus
  transformation
Add support for new instruction types to parser