You are totally right, namespace_string and write_concern were needed at one point but not any longer.

The Operations enum is defined directly in message.h so that needs to stay but it gives us BufBuilder and BSONObjBuilder as well so we can get ride of bsonobj.h and not forward declare anything.