Your normals are too quantized. Simplest solution would be to use a higher precision normal buffer or take a look in Crytek's "Reaching the speed of light" - paper where they explain how to efficiently use 3 x 8 bit to store normals with good precision.;D
And about squares... I looked up different deferred shading implementations and notice them there too so i think it's ok...
Phong was intentional, since it's more accurate (I am aware it's slower). I will switch to blinn later, since from my observation people that are not into graphics don't see the difference xDAlso, please use Blinn-Phong. Phong is evil. ;D