Consolidate get_rows + get_rows_null, return empty array on no results

* The previous behavior was that get_rows would exit(1) after printing
  an error message and get_rows_null would return NULL when their SQL
  queries returned no results. This resulted in a lot of complaints from
  foreach. All direct and indirect usages of either function have been
  replaced by get_rows.
* Tests for whether the $result of get_rows_null was == NULL have each
  been replaced by !$result, which is true for the empty array.
* The two calls to plain get_rows occurred in people.php and utils.php
  (realSendAllEmail). people.php now displays a message when there are
  no people. realSendAllEmail simply returns instead of throwing an
  error when there are no emails to be sent, which I think is more
  sensible behavior for a cronjob function.
* I have not changed any callers who directly index the array returned
  from either function without any tests.
Consolidate get_elements + get_elements_null, return empty array

* The previous behavior appears to be that both would return NULL when
  no results were found, even though according to the comments,
  get_elements was supposed to cause an error. (I don't think
  mysql_query returns FALSE when no results are found.) Again, there
  were complaints from foreach, which should now be fixed. All direct
  and indirect usages of either function have been placed with
  get_elements.
* Tests of the results of either function against NULL have again been
  replaced with direct boolean evaluation where they are necessary. Many
  unnecessary tests have been removed.
* Certain other NULLs that get appended to have been replaced with
  array()s.
Replace more NULLs with empty array()s and add messages for empty lists

Specifically, when listing all rounds, the answers in any particular
round, or candidate users for the various roles of a puzzle, messages
are now displayed when there are zero such things to list. Unnecessary
tests around such functions that display such lists are removed.
Merge branch 'master' into dev-betaveros
Tidy up MySQL transactions, unsilence errors, and get rid of more NULLs

* Now MySQL transactions don't fail silently. One necessary hack is that
  the isRoundCaptain($uid) function, which queries a nonexistent column
  `addToRoundCaptainQueue`, is modified to just return false. If we
  decide to use this privilege in the future, the column should be added
  to the table and schema first. I think it's more important to know
  when our queries against the database fails.
* In various other places, more NULLs were replaced with empty array()s
  and tests against NULL were replaced with boolean tests.
Small HTML niceness fixes

* <font> tags replaced with a class. (Seriously, people, they were
  deprecated in 1998.)
* Inexplicable stray </small> tag deleted
Reduce boilerplate in printing navigation menu
Add message to updates.php when no updates
Merge branch 'dev-betaveros'