Performance update to SqlDialect

By counting the number of insertable and updateable columns upfront, we
can allocate fixed size arrays instead of having to use a List and
.ToArray()