Don't attempt to generate a description for null external pointers

This fixes an issue caused by the way external pointer objects work in R. When an object containing an `EXTPTRSXP` is saved, the value of the external pointer is not saved. When that object is loaded, it comes back to life with a `null` external pointer, and if routines that access that pointer without checking it, crashes ensue.
Do we need a codepath for S3 objects as well? (typically lists). I know that RProtoBuf and XML packages both use external pointers -- how are objects from those packages represented and do we cover that here? I guess RODBC likely also uses external pointers it would be good to check that as well.