Add versioneer 0.10
Hook up versioneer in setup.py
Install versioneer

This file helps to compute a version number in source trees obtained
from git-archive tarball (such as those provided by githubs
download-from-tag feature). Distribution tarballs (build by setup.py
sdist) and build directories (produced by setup.py build) will contain
a much shorter file that just contains the computed version number.

The PyOP2 package version now includes the git revision as returned by
  git describe --tags --dirty --always
Set versioneer default to string set in version.py
Merge pull request #375 from OP2/versioneer

Add version information using versioneer

The PyOP2 package version now includes the git revision as returned by
  git describe --tags --dirty --always

This means that users can easily include accurate version numbers with
bug reports:

  $ python setup.py --version
  0.10.0-391-g65c034c

and we can query PyOP2 programmatically for an accurate version number

  from pyop2 import __version__

The format is (dirty is set if the tree has uncommited changes)
  <release>-<number of commits ahead of release>-<git sha1>-<dirty>

When building tarballs (including getting them from GitHub) the right
version is baked in automagically using a git export-subst hook.
Default COFFEE configuration to GNU compiler / SSE ISA
Add context manager for timing a given code region
Profiling: add a Timer.reset method
Profiling: add timing method to get average time for task
Rename profile decorator to timed_function
Add timed region around sparsity building
Add timed region around PETSc KSP solve
Time ParLoop compute, halo exchange, reduction
Add configuration option to print summary at exit

Either set the print_summary configuration option or export
PYOP2_PRINT_SUMMARY
Profiling: get_timers can optionally reset all timers
Only add timer to global dict once it has been started
Wrap timed regions in try/finally
Make Timer.stop and toc return elapsed time
Merge pull request #376 from OP2/timers

Add timing of core code regions

* Time sparsity building, PETSc solve, par_loop compute, halo exchange
* Timings accessible via get_timers or printed with summary
* Add config option PYOP2_PRINT_SUMMARY to print summary at exit
Merge pull request #372 from OP2/coffee-expr-rewriter

Coffee Expression Rewriter

The code motioner now can:

* Keep track of hoisted invariant sub-expressions, store them in
temporaries, and re-use them for further calculations. Especially useful
in more complicated forms like those based on hyperelasticity.

* Repeatedly hoist code, expand expressions (e.g. (A+B)*alpha =>
A*alpha + B*alpha), and apply the distributive property. This allows
hoisting even more terms. Motivating example is Burgers.

This introduces a new python dependency: networkx, a
library for handling graphs. This is used by COFFEE to track
dependencies among hoisted symbols.