Fixing bug where ID was being set to empty string

IDs were set to empty strings which was causing javascript errors since
templated code resolved into the form:

var something = ;

Where the templated variable was printed before the semicolon, but since
it was an empty string javascript would halt with an error.  The empty
strings have been replaced with a 0 instead.
Fixing broken request to sabretooth for recording lists

The cenozo_manager mechanism has been changed to allow pre-defining
machine request site and roles.  Additionally, the check for whether
recording urls are valid and accessible has been removed from the
assignment_add widget.
Merge remote branch 'origin/release' into develop

Conflicts:
	api/ui/widget/assignment_add.class.php
bug-fix: patches must be twice runnable

fix upgrade patches to procedures that test whether
the patch has already been applied
bug-fix: assignment unique key, null sabretooth mg

add unique key to assignment table on user and participant id's,
check in for user access to tracking cohort before trying
to use sabretooth manager to get tracking recordings
minor doc update
Merge remote branch 'origin/release' into develop

Conflicts:
	doc/design/cedar.mwb