Dispatch on C/Python Expressions based on "eval" attribute

It's not safe to check for a .code attribute in an Expression and assume
it's a "C kernel" one, since the user may have subclassed expression and
called the superclass __init__ method.  Instead, check for eval and
assume that if it exists we have a Python Expression.
Merge pull request #416 from firedrakeproject/notice_user_expressions

* notice_user_expressions:
  Dispatch on C/Python Expressions based on "eval" attribute
Merge pull request #415 from firedrakeproject/multigrid-automation

* multigrid-automation: (31 commits)
  Enable multigrid tests on travis
  Add check for refinement of overlapped meshes
  Convert grid transfer kernels to COFFEE ast
  Absolute imports in mg submodule
  Add documentation to multigrid objects
  Add tests of multigrid building blocks
  NotImplementedError when trying to refine non-triangle mesh
  Also support u.assign(0)
  Add FunctionHierarchy.assign
  Add sketch of solving P2 poisson problem with FAS
  Add sketch of solving P2 poisson problem with linear GMG
  Build mesh hierarchies on non-overlapped meshes
  Expose grid transfer operators on function hierarchies
  Add grid transfer operators on function space hierarchies
  Add Function hierarchy
  Add special-casing for P0 cell_node_map on extruded meshes
  Add code constructing PyOP2 kernels for restriction, etc.
  Add ability to get restriction and injection weights
  Add basic hierarchies of function spaces
  Save cell and vertex orientations in mesh hierarchy
  ...
Implement grid transfer on refined intervals
Test basic interval refinement
Test grid transfer operators on intervals
Implement get_transformations for extruded cells

The extra "vertical" coordinate is just mapped by the identity, so we
only need to compute transforms for the base cell.
Update get_transforms_to_fine for extruded cells

Again, the extra "vertical" coordinate is mapped by the identity.
Return extruded offset array from get_unique_indices

Use it when creating cell_node_maps on extruded meshes.  This means we
can have grid transfer for arbitrary order function spaces on extruded
meshes.
Add tests of grid transfer operators on extruded meshes

Now that we build the correct cell node maps for arbitrary order spaces
on extruded meshes, test that grid transfers behave correctly.
Remove special-casing of P0

Now that we can transfer arbitrary function spaces on extruded meshes,
remove the special case code for P0 transfer.