New validation logic

WTH, John's customized hooks are really not good ideas. While
validate_data and before_save are both hooks in the same state
zone(after the request data has come in, before changes are stored),
hooking behaviors on both sides makes it confusing.