Started encoding and ran into some issues

- To encode bson, we have to know the size up front which means we need
  to keep the size from before. Currently, we throw it away. This also
  means that a user should never be able to construct a bson object. We
  should make the enums private. I think we should also move the encode
  and decode login in bson.rs. There is no reason to have them be there
  own seperate modules.
- How to convert an i32 into bytes