empty-handling for curric_codes
swap var names to read more intuitively
var  in foreach was squashing previously set value
without this space, we get an SQL error, of course
enforce security in front of the deletion script
let election_id be optional, where appropriate
add logging for main DB entities
unused fn
create log message when the hours eligibilty census has completed
email results to an admin configurable list of users
add user-configurable interval between email summaries
add helper function to determine voter eligibility and curric_code
refactor voter::courseload() to return a result specific to the input election
removing unused fn; we are not going to enforce this constraint
relax validation on election start times
make use of excluded curric codes for determining eligibility
cleanup the top of ballot.php. Create logical, Moodle-y groupings of boilerplate. rename 'candoanything'. Remove redundant data in customdata. Refactor metadata check method to return useful info on failure
set defaults for excl_curric_codes; https://trello.com/c/luwjyZkn
https://trello.com/c/1rs3RQDW Don't let old elections be changed after the end_date
remove static link from form definition; move to ballot.php where it can be controlled by existing access filters (namely: election::readonly)