collection: check or $ and . keys on insert and update.

In an attempt to help protect developers from inserting invalid
data into their database, this commit will check documents on insertion
and update for keys containing . or $ in them.

We can't actually check for all possible errors in the update case,
which is unfortunate, but this will catch some subset of them.

If you would like to go fast, simply specify MONGOC_INSERT_NO_VALIDATE
or MONGOC_UPDATE_NO_VALIDATE for flags to avoid the checks.