Changes to DapperRow to make it obey the semantics of IDictionary<>

Hi.

I modified DapperRow so that it obeys the semantics of IDictionary<>.

AFAICT there were two issues with current implementation of DapperRow:
1. Count is expected to be O(1) not O(n)
2. .Add should throw on duplicate key

In addition I made some bug fixes in how DBNull is handled and a fix regarding dynamic names.

I had applied KorsG pull request to this pull request as well because it made sense to me to support VB as well.