**Breaks build** Begin integrating new farm and turbine modules.

* Also make changes to reduced_functional to work with new API
* Update the structure of the TurbineCache
* Add an output management class
Fix interface with dolfin-adjoint.
Renaming of files.

* turbine/turbine_parameterisation.py -> turbine/parameterisation.py
* split turbines.py into turbine_cache.py and turbine_function.py
Update a number of API changes. Seems to work: very limited testing as such.
Rename prototype_turbine -> turbine_specification
Adjust Farm so that a turbine can be specified at instantiation.
Update turbine module. Tests still do not all pass.

* Turbine parameterisation is now done via the Turbine class type (i.e.,
  BumpTurbine, SmearedTurbine, ThrustTurbine, ImplicitThrustTurbine). This
  simplifies the API and creation of turbines as defaults can be given.
* TurbineCache updated to derive from dict so you can call
  turbine_cache["position"] instead of turbine_cache.cache["position"].
  Interface is otherwise the same (e.g. still call turbine_cache.update(farm)).
* Many changes in reduced_functional.py to reflect these API changes.
* Minor syntax changes throughout.
* Tests have not been fixed with this update.
Update channel-optimization for new interface
Update test_checkpoint.py interface. Passes.
Update test_dynamic_control.py -- Passes.
Update test_gradient_of_configurations.py -- FAILS.
Update test_gradient. FAILS friction. PASSES position.
Update test_minimal_distance_constraint.py -- PASSES
Update test_multi_steady_state.py -- FAILS
Update test_friction_optimisation.py -- FAILS
Update test_position_optimisation.py -- FAILS
Update test_smearead_turbine.py. Passes.
Add a unit_tests directory with turbine tests.
Fix bug in TurbineFunction and TurbineCache
Update due to fix in TurbineCache.

* test_position_optimisation.py now PASSES
* test_friction_optimisation.py now PASSES