ConnectionStringBuilder and Enum/Delegate cleanup

I've started with the codebase cleanup. As a lot of the code is a bit chaotic due to all the changes done over the past years by various authors, it's best to clean the stuff up a bit, weed out dead code and the like, restructure files, make everything look the same and professional and more predictable, so it's easier to understand when reading the code. 

I've started with the connectionstring builder. I had cleaned up the connection class as well, but that was in v2.2, and as it changed a lot in v3 branch, I'll re-do that one later. 

(all tests pass)
There's no consensus at all, I actually think most (all?) regions were introduced by me :) If you look at 2.2 you'll see that separation actually happened using partial classes, which I didn't like so much - I merged some cases of partial classes into one. I do agree that nested regions generally make little sense though, and hurt readability.

There are many cases where creating classes instead of thematic regions doesn't make much sense, NpgsqlConnector may be be a good example. A class can be responsible for different functions: - writing queries, reading responses, connecting, disconnecting - while sharing the same state/fields... Suggesting that these functions should be split into different classes seems to lead to a pretty heavy (even convoluted?) design.

Anyway... it's another discussion we probably shouldn't spend too much time on.