Introduce refined grid in the form of an Octree grid.

This commit also introduces a new abstract base class Grid from which both StructuredGrid and OctreeGrid inherit. Also introduce new abstract base class Geometry from which all the geometry primitives inherit.
Fix compilation for gcc versions < 4.7.
Fix bug in creation of neighbour distances of StructuredGrid.
Fix diffusive jump rate calculation for grids other than StructuredGrid. Also fix face rectangle lookup for OctreeGrid.
Expose new Grid, StructuredGrid and OctreeGrid interface, with NextSubvolumeMethod to python. Introduce method to get concentrations from an OctreeGrid.
Add set_position method to BindingReaction
Merge branch 'octreegrid' into test

Conflicts:
	src/StructuredGrid.h
Remove listing of interface compartment indices in NextSubvolumeMethod::set_interface
Merge branch 'master' into test
Fix crash where we did not implement the is_in check correctly for Octree. Add debugging assertions.
Merge branch 'octreegrid' into test
Fix compilation error in OctreeGrid.h
Merge branch 'octreegrid' into test
std:set included in NextSubVolume.h
Merge branch 'octreegrid'
Merge branch 'master' of github.com:tycheSSA/Tyche
added remove_diffusion_across
added set_compartment to python, but still doesnt work
added set_compartment to python interface
added recalc_all_propensities python function to nextsubvolume operator