Add optional argument headers to Kernel

Allows passing additional system headers to be included.
Allow executing user code snippet in kernel wrapper

Add an optional argument user_code to the Kernel constructor, which
allows specifying a code snippet which is to be executed at the very
start of the generated kernel wrapper. This allows executing some
code as a one-off, such as setting a random seed.
Document Kernel parameters
Add example usage of headers, user_code to docstring
Merge pull request #361 from OP2/feature/user-headers-and-code

Users can specify custom headers and code snippets for kernels