bsongen: handle nesting with unique var names
bsongen: prefix local vars with _
bsongen: more tweaks
bsongen: better bson.Null handling
bson: encode maps & slices as empty if nil.

I was encoding them as bson.Null, but existing
clients expect empty objects instead. Legacy wins.
bson: change custom encoders to not use Null for slices and maps
bson: RecordLen -> Close
bson: improved nil value handling for custom marshalers
Merge branch 'master' into bson
bsongen: fix imports
bson: Uniformity: encode all nil values as Null
bson: minor fix in slice encoding
bson: revert vertical_split.py test fix
Merge branch 'bson'