Add cancan gem for authorisation
Fix test context to be in line with tests
Add user roles

The assumption is that the roles are hierarchical (ie an admin can do anything
that an editor can)
Restrict needs updates to editors
Only show "Edit" tab if user can edit needs

This change also separates the "view need" and "update need"
integration tests a bit cleaner, as well as removing duplication
(like checking whether the "Edit" tab is present in several places)