Refine orphan_sponsroship_status changes

JIRA task https://osraav.atlassian.net/browse/OSRA-113

- Change sponsorship inactivation so that `orphan_sponsorship_status` is set to 'Previously Sponsored'
- When `orphan_status` changes from 'Active'  to 'Inactive', 'On Hold' or 'Under Review', `orphan_sponsorship_status` changes to 'On Hold' (ineligible for new sponsorship)
- When `orphan_status` changes from 'Inactive', 'On Hold' or 'Under Review' to 'Active', `orphan_sponsorship_status` changes to 'Unsponsored', 'Sponsored' or 'Previously Sponsored', reflecting orphan's sponsorship history

### JIRA
OSRA-113 #Code-Review
OSRA-169 #Code-Review
OSRA-170 #Code-Review
They are different abstractions so I think it can be justified providing we can avoid ambiguity in the method names.
```
set_sponsored
set_unsponsored
set_previously_sponsored
```
and
```
update_sponsorship_status!(:keyword)
```
the bang gives us a good clue that this updates the field at the db level
Is this the sort of thing you had in mind?