Updating interface routines to allow for mechanics-mechanics coupling

Currently:
Only Lagrange Multiplier method and tight coupling (CMISSInterfaceConditionFieldContinuityOperator) implemented
Laplace-Laplace and LinearElasticity-LinearElasticity work fine in 2D and 3D

Working on:
Fixing bug in FiniteElasticity-FiniteElasticity problems.
Penalty method

Tracker item 2271
Mechanics-mechanics coupling

Currently:
Implemented Penalty Method for linear problems
LinearElasticity-LinearElasticity tight coupling (weak form) work fine in 2D and 3D with the CMISSInterfaceConditionFieldContinuityOperator

Implemented Lagrange Multiplier method for non-linear problems
FiniteElasticity-FiniteElasticity tight coupling (weak form) works fine with the CMISSInterfaceConditionFieldContinuityOperator
This is with the PETSc non-linear newton solver with PETSc Jacobian finite difference calculations.

Working on:
Implementing Penalty Method for non-linear problems
Applying boundary conditions on the Lagrange field variables (this will allow us to decouple specific field values between the coupled bodies eg hydrostatic pressure etc)

Tracker item 2271
Merge branch 'master' into TightCoupling
Implemented Penalty Method for non-linear-non-linear coupled problems

Currently:
Implemented Penalty Method for non-linear-non-linear coupled problems
FiniteElasticity-FiniteElasticity tight coupling (weak form) works fine with the CMISSInterfaceConditionFieldContinuityOperator

Working on:
Applying boundary conditions on the Lagrange field variables (this will allow us to decouple specific field values between the coupled bodies eg hydrostatic pressure etc)

Tracker item 2271
Implemented boundary conditions on Lagrange field variable for coupled interface problems

Currently:
Applying boundary conditions on the Lagrange field variable. Tested using uniaxial extension examples.
FiniteElasticity-FiniteElasticity & LinearElasticity-LinearElasticity tight coupling (weak form) problems work fine with the CMISSInterfaceConditionFieldContinuityOperator with both Lagrange Multipier & Penalty Methods
For the moment this has only been used for fixing dofs at the interface and the corresponding dofs on two bodies which are tightly coupled.
The case where boundary conditions are only applied on the Lagrange field variable will need to be tested (this will allow us to decouple specific field values between the coupled bodies eg hydrostatic pressure etc)

Working on:
Testing boundary conditions on only the Lagrange field variable at the interface
Coupling Membrane and Finite-Elasticity

Tracker item 2271
Merge remote branch 'JessicaJor/master' into TightCoupling
Merge branch 'master' of https://github.com/OpenCMISS/cm into TightCoupling
Updating OpenCMISS makefile boundary_condition_routines dependencies

Tracker item 2271
Updating to allow for coupling of dependent field variables whos number of components do not match

For example in problems such as 1)incompressible finite elasticity - 2) Membrane coupling where 1) has an extra dependent field variable component relating to hydrostatic pressure
In general the user will need to set a fixed boundary condition on the interface Lagrange field dof relating to the field components not present in each of the coupled bodies.
This would eliminate the dof from the solver matrices, ie in the example above the hydrostatic pressure term from 1) would be removed.

Tracker item 2271
Merge branch 'master' of https://github.com/OpenCMISS/cm into TightCoupling
Merge branch 'master' into TightCoupling
Updating the automatic creation of a Lagrange field for an interface condition

Tracker item 2271
Merge branch 'master' into tightcoupling

Update coupling interface with style changes,
and fix some other small conflicts due to
whitespace changes.

Conflicts:
	src/equations_set_routines.f90
	src/opencmiss.f90
	src/solver_routines.f90
Update Makefile dependency
Fix up some parameter names in opencmiss.f90

Some had the first letter made lower case when they
shouldn't have.
Routine naming consistency fix for interfaces

SetBasis should be BasisSet for consistency, and because
this is used to identify properties for Python bindings.
Documentation update for interface mesh connectivity routines
Updates to INTERFACE_MATRICES_ELEMENT_FINALISE to allow for multiple iterations in control loops

EQUATIONS_MATRICES_ELEMENT_FINALISE has also been tidied & EQUATIONS_MATRICES_ELEMENT_MATRIX_FINALISE has been updated

Tracker item 2271
Fix bug in interface matrix assembly

Use the correct element number when the element
corresponds to the mesh of the interface, rather
than one of the coupled meshes. This worked with
the examples that only had single elements but
not for multi-element problems.
Fix bug when assembling FEM matrix for the interface

Loop over the number of components in the Lagrange field,
rather than the dependent field variable, as the dependent
field could have eg. a hydrostatic pressure variable that
isn't actually coupled.