Fixed DBObjects so that it a) correctly converts DBRefs and b) iterates over items in a Map to also correctly convert nested items.
Updated DBObjects to also deep-dive into Arrays to convert everything in there as well.
Changed from codereview - passing in null instead of key for adding things to the list, as this value is not used
Small fix to prevent null pointer exceptions on collection name when performing an inline map-reduce
Added an undefinedCodec to deal with getting BSONType undefined fields from the server.
Changes from codereview - updated the UndefinedCodec to read/write an Undefined type to prevent us using null values.  Added a unit test and Javadoc too.
Changes from codereview - updated JavaDoc comments again.
Fixed test so that it works under 2.4
Curse you, unused imports!  Who's idea was that? (it was mine)