Cache results from Mapper#find(id)
Use stringified ids in IdentityMap

For BSON, string and numeric ids, this works perfectly. This is what
every DB I know of uses for keys anyway so this shouldn't be a problem.
If it becomes a problem in the future, we can address it then.
Expand the idea of inequality of references

References should be `==` to their dereferenced counterparts. However,
the `eql?` method in Ruby usually implies "same type and equal".
Do not cache nil results
Remove unnecessary require