Create subReaders lazily

Should improve memory usage
diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py
index 4fcc411..f3876f4 100644
--- a/Lib/fontTools/ttLib/tables/otBase.py
+++ b/Lib/fontTools/ttLib/tables/otBase.py
@@ -585,8 +585,9 @@
 	def ensureDecompiled(self):
 		if self.compileStatus != 1:
 			return
-		self.decompile(self.reader, self.font)
-		del self.reader, self.font
+		subReader = self.reader.getSubReader(self.offset)
+		self.decompile(subReader, self.font)
+		del self.reader, self.font, self.offset
 
 	def preCompile(self):
 		pass # used only by the LookupList class
diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py
index b96ef5c..8345094 100644
--- a/Lib/fontTools/ttLib/tables/otConverters.py
+++ b/Lib/fontTools/ttLib/tables/otConverters.py
@@ -183,14 +183,13 @@
 			print "*** Warning: offset is not 0, yet suspiciously low (%s). table: %s" \
 					% (offset, self.tableClass.__name__)
 			return None
-		subReader = reader.getSubReader(offset)
 		table = self.tableClass()
-		if lazy:
-			table.reader = subReader
-			table.font = font
-			table.compileStatus = 1
-		else:
-			table.decompile(subReader, font)
+		table.reader = reader
+		table.offset = offset
+		table.font = font
+		table.compileStatus = 1
+		if not lazy:
+			table.ensureDecompiled()
 		return table
 	
 	def write(self, writer, font, tableDict, value, repeatIndex=None):
@@ -222,15 +221,14 @@
 		offset = reader.readULong()
 		if offset == 0:
 			return None
-		subReader = reader.getSubReader(offset)
 		table = self.tableClass()
-		table.start = subReader.offset
-		if lazy:
-			table.reader = subReader
-			table.font = font
-			table.compileStatus = 1
-		else:
-			table.decompile(subReader, font)
+		table.start = reader.offset + offset
+		table.reader = reader
+		table.offset = offset
+		table.font = font
+		table.compileStatus = 1
+		if not lazy:
+			table.ensureDecompiled()
 		return table
 	
 	def write(self, writer, font, tableDict, value, repeatIndex=None):