Better reservations
Better reservations

- Add function to process promotions from waitlist. Promotions are
  done when a granted seat is returned. Promotions require a
  transaction on the whole session which can require many retries,
  so to avoid unnecessary delay on the completion of the return the
  promotions will be handled in a separate function.

- Use transaction for returning waitlisted reservations. Very small
  scoped transaction that will guard against concurrent promotion
  from waitlist and return from waitlist.

- Throw error if getProviderId does not recognize the user. This
  will reduce pollution of datastore data when running tests with
  many fake users.

Change-Id: I228558a4079470a6c656aa6bdf7710dcd43b9ae1

jarekankowski/iosched,WeRockStar/iosched,jarekankowski/iosched,jarekankowski/iosched,WeRockStar/iosched,WeRockStar/iosched