Update boundary condition arrays

- Add a second array for the specific boundary condition
  type and rename the original array to make it's use more
  clear.

- Create new DOF fixed, free and mixed constants for the
  boundary condition DOF type array.

- Update references to the old global_boundary_conditions
  array to use one of the two new arrays.

- Reorganise the boundary condition routines to set values
  for DOFs in both arrays.

- Remove unused equations set boundary condition constants.

Tracker item 3052.
Problem_solver_load_increment_apply doesn't need to be public
Add BC routine for checking interpolation type

Some boundary condition types might not make sense
when applied to a field component with constant or
element constant interpolation.  Tracker item 3052.
Rearrange solver finishing routines

solver_create_finish now calls the specific solver
finishing routine, eg. solver_linear_create_finish,
which is more intuitive. Now the solver isn't marked
as finished until the solver equations boundary conditions
are finished.
Remove unused variables in solver_routines.f90
Keep RHS DOFs free when applying pressure BCs

This is because the pressure terms are added within
the finite element residual evaluation, rather than
by setting the RHS field variable values, as in
standard Neumann conditions.  Do the same also for
the impermeable wall condition.  Tracker item 3052.
Add routine for creating field parameter set if it's not already created
Use standard BC routines for setting Neumann conditions

These don't need their own special routine for setting them,
and the way it was before you could only set Neumann conditions
once.

The current change might break these conditions when running in
parallel due to the way global to local is used, but they don't
seem to work in serial and need a big clean up, so this
will probably get changed anyways.
Fix doxygen comment in boundary conditions type for Neumann conditions
Count boundary condition types as they're added

Count condition types as they're added and then sum them
across all nodes, so that all nodes know if a certain
boundary condition type has been set. Avoids looping
over all dofs to count the different condition types.
Add missing enters call in boundary condition routines
Update boundary condition DOF constants

Keep them ordered, rather than using the old mixed number of 7,
seeing as these are a new set of constants.
Create parameter sets for boundary conditions as required

Rather than adding parameter sets that might be required
based on the equations set, create then when a BC is set on
a DOF. Also generalise this by keeping a list of parameter
sets that are required by the boundary conditions.
Check boundary conditions are appropriate for equations sets
Add missing ENTERS call in Field_ParameterSetEnsureCreated
Fix error in MPI reduce of BC required parameter sets

Whoops, should have been an OR, not an AND. Parameter
set should be created on all nodes if it is required
on any one.
Use Field_ParameterSetEnsureCreated where appropriate
Update element node versions when changing an element basis

Previously only the node numbers were updated, which caused errors
when running the Meshes/MoreComplexMesh example.
Also changed the rest of the mesh_topology_elements_element_basis_set
routine to use move_alloc.
Tracker item 3284.
Merge pull request #95 from adamreeve/mesh_example

Update element node versions when changing an element basis
Fix errors when re-setting boundary conditions at a DOF

Make sure number of Dirichlet conditions and condition counts
are correct when a boundary condition has been previously
set at a DOF.