[ RUBY-761 ] Normalize symbol keys into strings.

Like Active Support's `HashWithIndifferentAccess`

Note that I added the methods `to_bson_normalized_key` and `to_bson_normalized_value` on `Object` with specific implementations on `Symbol`, `Hash`, and `Array`. The reason for this was performance related in that 1) We don't have to walk the object hierarchy when doing `object.is_a?(Symbol)` and 2) converting nested values like `Array` and `Hash` don't require a case statement or if/else/if.

cc/ @estolfo @gjmurakami-10gen @samantharitter

https://jira.mongodb.org/browse/RUBY-761