[subset] Make sure objects are decompiled during subsetting

We need to ensureDecompiled() whenever an object is modified
before we look up any member of it.

Note that normally objects remaining decompiled until we try
to write them out is fine, except for when they depend on
font.getGlyphOrder().  This however, shouldn't normally happen
since if there's an object depending on the glyph list (eg. a
Coverage table), it should already have been process to subset
it according to the requested glyphs.  Or that's the idea at
least.  The few cases that were not handled are handled
explicitly now.

This was showing a bug when subsetting Cabin for example.
diff --git a/Lib/fontTools/subset.py b/Lib/fontTools/subset.py
index 0c38f9b..1f382da 100644
--- a/Lib/fontTools/subset.py
+++ b/Lib/fontTools/subset.py
@@ -280,6 +280,7 @@
 @_add_method(otTables.Anchor)
 def prune_hints(self):
   # Drop device tables / contour anchor point
+  self.ensureDecompiled()
   self.Format = 1
 
 @_add_method(otTables.CursivePos)
@@ -879,6 +880,7 @@
 
 @_add_method(otTables.LookupList)
 def subset_lookups(self, lookup_indices):
+  self.ensureDecompiled()
   self.Lookup = [self.Lookup[i] for i in lookup_indices
                  if i < self.LookupCount]
   self.LookupCount = len(self.Lookup)
@@ -930,6 +932,7 @@
 
 @_add_method(otTables.FeatureList)
 def subset_features(self, feature_indices):
+  self.ensureDecompiled()
   self.FeatureRecord = [self.FeatureRecord[i] for i in feature_indices]
   self.FeatureCount = len(self.FeatureRecord)
   return bool(self.FeatureCount)