spike email on error
abstract success method, action dynamic funcs are like blocks so this feels OK, closes #584
move mailer to lib, add gmail config, closes #397