Danny Graham's injury-time strike broke Aston Villa's hearts to salvage a point for Swansea in a lively 2-2 draw.