core: implement an auto-blocking system

When a user first hits their hourly/daily limit, there is a sending
block imposed on them for the period that they hit this limit. If a user
then repeats the offense the block is doubled. A third time, the block
is doubled again. Finally if they do it a fourth time, their account is
disabled.