Add a new ability file for the viewer role.
If not one of the supported roles, generic permissions are in Ability
Authorize API::QuestionsController through `Survey`.
When authorising QuestionsController methods using the parent survey, use `try` in case it doesn't exist.
Authorize the API::CategoryController actions using the parent survey.
Don't authorise Surveys#questions_count.

It fetches counts only for authorised surveys anyway.
Authorize API::OptionsController using the parent survey.
Option#survey delegates to it's parent question.

Update the version of `shoulda-matchers` so we get the `delegate_method` matcher.
Finish up ViewerAbility.

- Add abilities to see responses/reports.
- Add abilities to see surveys shared with his organisation.
`current_ability` returns a PublicResponseAbility only if there isn't a logged in user.
Pass all the failing specs with the change in roles.

- Removed the old_ability file.
- Added a dummy (for now) AdminAbility class.
Added ability for the `field_agent` role.
Add abilities for the Supervisor role.
A field_agent should be able to generate excel for his own responses.
Show the 'Download Excel' button only if the current user has permission to download excel.
Don't show the `Active, Archived` etc. filters only if the user isn't logged in.
Add abilities for the `Designer` role.
Add abilities for the `Manager` role.
Add abilities for the `Admin` and `SuperAdmin` roles.
Allow deleting a survey only if it has zero responses.