Reader type enforcement

Enforces getBsonType() only gets called when state is TYPE in the BsonDocumentReader. This ensures the DocumentReader, BinaryReader and JsonReader behave the same way.

code review http://codereview.10gen.com/5117360696459264/