Adds phone number validation
Adds assignment of new item on user join

On user join, attempt to assign an unoffered item to them.
(Unoffered means that someone wants to give it away, but there were
no nearby users who could accept it, so it was placed in limbo.)

"Joining" constitutes having recently changed a user's location and
phone number from nil to a valid value. (This is only rigorous enough
for the tech demo; it's obviously flimsy enough for someone to abuse
this and should be hardened at a later dat.)