Provide a project method.

Provide a project method for Functions. As a side effect enable

 project(u, v)

where v is a function. This will project u onto v.
Ensure coverage of all project syntax.

Switch the spelling of the projection tests to ensure that all the
code paths are traversed.
More documentation fixes
Merge pull request #185 from firedrakeproject/project_method

Add a project method to Functions.