Organization and cleanup

Improve OO design of NpgsqlDescribe by splitting it into an abstract base class and two sub classes.
Split NpgsqlState by moving the two backend response handlers into their own files.
Fix BackendEncoding.UTF8Encoding to be readonly.
Minor cleanups.