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.