[WIP] Implement OnDesk purchase process and extend checkin system

- [x] On desk purchase process
- [x] Purchase detail view
- [x] Change purchase state
- [x] Download invoice
- [x] Update ticket
- [x] Download badge
- [x] Link ticket actions (cancel, edit) from purchase detail view
Would prefer to see `if self.request.POST.get('signed_data', None) is not None`  here