Add experimental class for periodic displaced BCs

Address #74

Hacked class to test SfePy's linear combination boundary
conditions. There is a test case in the periodic_displacement.ipynb
which doesn't work. It throws a ValueError. This is being committed in
order to show the issue to others.
Reored SfePy solution to fix displaced BCS

Address #74

Reorder the creation of the non-linear solver in the
ElastcicFESimulationPD. This is to deal with a bug in SfePy, see
https://github.com/sfepy/sfepy/issues/267
Update test notebook

Address #74
Deomnstrate issue with periodic displaced BCs

Address #74
Demo some changes in Sfepy

Address #74
Add doctest to check rescaling for Legendre basis

Fix #83

Add doctest to check for rescaling of Legendre basis.
Rescaled coefficients still provide comparable and
accurate results in Legendre notebooks example.

The equations in the cahn_hilliard_simulation class
were also changed to meet PEP8 styling forms.
Fix broken Legendre polynomial test case

Address #83

The previous commit fixed the broken scaling for the Legendre
Polynomial bassis. However, the test case, which worked with the
broken scaling was not updated to work with the new (correct) scaling.
Furthermore the tests have been changed to explicitly calculate the
test comparison values by constructing the Legendre Polynomials in the
test.
ElasticFESimulation uses periodic offset BCs.

Address #74

The ElasticFESimulation class now uses periodic offset boundary
conditions that have recently been introduced into SfePy on a branch.
Other changes with this commit include:

 * Remove strain_index argument to get_response and introduce
   get_strain and get_displacement methods.

 * 2D and 3D tests for vertex displacement offset and periodicity.

 * 3D is broken.

 * Notebooks have not been updated.

 * Tests pass other than 3D tests.
Update 2D elastic notebooks for periodic offset BC

Address #74

2D elasticity notebooks have been regenerated using the periodic
offset boundary conditions. The are no more edge effects associated
with the non-periodic boundary conditions.
Fix 3D periodic displacement BCs and int order

Address #74

Issues:

 * 3D periodic displacement boundary conditions work.

 * There was a bug previously with the x-z and x-y edge vertex
   positions for simple displacement test cases. The offset condition
   was not satisfied on the x-z and z-y edges on the right plane. The
   bug was caused by having two competing periodic boundary conditions
   in the x-direction.

 * Furthermore, the order=3 Integral order was wrong. It should be
   4. In general, it needs to be 2 * approx_order. This meant that the
   3D results up until this commit have probably been highly
   inaccurate.

Fixes:

This commit removed the x-direction periodicity from those edge nodes
on the y-plane and z-plane boundary conditions. Thus, the only
x-direction periodicity is the offset condition on the edge nodes.
This commit address the issue by introducing two periodic boundary
conditions for the z-plane and y-plane boundary conditions. One
boundary condition is for the y and z-direction and includes the x-z
and x-y edges. The other periodic boundary condition is for the
x-direction, but doesn't include the right most edge vertices. The
subdomain_func method of the ElasticFESimulation class now takes a
max_x argument, which enables the exclusion of the left most x-plane
vertices. There is a quite a lot of code duplication, which should be
address in a refactor due to having two similar methods for the
periodic BCs.

Other stuff:

 * The test_elastic_FE_simulation_2D was removed as it was testing
   arbitrary values. It has been replaced with a doctest that tests
   that all the periodic boundary conditions are satisfied.
Merge pull request #1 from wd15/issue83-LegendreScaling

Fix broken Legendre polynomial test case
ElasticFESimulation calculates stress

Address #103

The ElasticFESimulation now calculates the stress as well as the
strain. No tests cases for this have been added. This will come later
as it is used.

Additionally the generic simulation class get_respnonse method has
been removed and replaced with the run method, which stores the
response.
Fix docs

Address #103
Merge pull request #104 from wd15/issue103-return-stress

Issue103 return stress
Merge pull request #100 from davidbrough1/issue83-LegendreScaling

Add doctest to check rescaling for Legendre basis