Fix: $push should create the field if absent

'If the field is absent in the document to update,
$push adds the array field with the value as its element.'

http://docs.mongodb.org/manual/reference/operator/update/push/
More support on regex searches

- Fixed the $regex operator
- Added the ability to search inside arrays
Merge pull request #67 from ahirata/fix_push

More support on $push and $regex
Acknowledgements
fixed arguments in collection_names
fixed some python 3 compatibility
Merge pull request #68 from Evgenus/master

arguments in collection_names
dotted names in sorting
Merge pull request #69 from Evgenus/master

dotted names in sorting
fixing "global name DuplicateKeyError is not defined" error
Merge pull request #70 from toddtomkinson/fix_DuplicateKeyError_import

fixing "global name DuplicateKeyError is not defined" error
Acknowledgements
Forbid non-string keys (#71)
Internalize dicts on updates