Implement our own CPU compilation

Instant is rather heavyweight for our needs, and it is very difficult to
modify either compilation flags or the compiler being used.  All we
really need to do is compile a single source file to a shared library
and load it with ctypes.  We can then set up the argument types to the
function we get back appropriately and call as before.
Respect debug configuration setting when compiling
Add _argtype properties to objects

Those objects which we pass to the compiled kernel will need a ctypes
argtype once we move away from instant compilation.
Make mat_utils purely a header file

We basically just paste the code in anyway, so why not get the
preprocessor to do it for us.
Migrate host code generation to compilation module

Rather than building a wrapper that takes PyObjects and unpacks them
into data, just write a wrapper with C types.  Now that we're using
ctypes to load the shared library we build, we just need to set the
argument type up appropriately on the ctypes function pointer.
Use list of flags in IR vectorizer

The new compilation module takes lists of flags, not bare strings, to
pass to the compiler, so do that.
Remove references to instant in documentation

Note that although we don't need instant, FFC does, so still require it
as part of tox/travis requirements.
Allow overriding compiler, linker from environment

CC overrides the C compiler, LDSHARED overrides the linker.